发现一个掘金的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