发现一个掘金的bug,我给出了解决办法

1 分钟
bug

大家好,我是 luckySnail ,最近在发文章的时候,发现一个 bug,当使用 markdown 链接格式[]() 的时候,如果链接中包含空格,就会出现下面这种情况。

非常影响体验,但是链接中携带空格是非常常见的现象。于是打算解决一下

解决

项目使用 markdown渲染和编辑都是 bytemd 。于是看看掘金,发现也存在这种情况。

其实解决方法也很简单,就是把链接中的空格替换为:%20

 // 替换链接中的空格为 %20
  const encodedValue = value.replace(/\[([^\]]+)\]\(([^)]+)\)/g, (match, text, url) => {
    const encodedUrl = url.replace(/ /g, '%20');
    return `[${text}](${encodedUrl})`;
  });

在 URL 中,空格是一个不安全的字符,所以我们需要进行编码。%20 是空格的 URL 编码形式。URL 编码(也称为百分号编码)是一种将 URL 中的特殊字符转换为安全格式的方式,这里我们使用正则表达式将 Markdown 链接中的空格替换为 %20,也就保证了链接在解析时不会因为空格而出现问题

注意⚠️:目前这种方式会引发新的问题,当 markdown 内容有 <img src="xxx" alt="](![image" width="100%" /> 这种的,会产生问题,目前没有太好的解决办法


此文自动发布于:github issues