【发布时间】:2017-11-13 22:19:53
【问题描述】:
我正在站点内的某些图像上实现 srcset 属性并遇到问题,因为 Chrome 不喜欢包含空格的 srcset 图像 url。 我的源 HTML 有许多图像标签,如下所示:
<img src="/images/image 1.jpg" alt="My alt" sizes="100vw" srcset="/images/image 1 136.jpg 136w, /images/image 1 165 165w, /images/image 1 286 286w">
我想要做的是用 %20 替换 srcset 中的空格,所以它看起来像:
<img src="/images/image 1.jpg" alt="My alt" sizes="100vw" srcset="/images/image%201%20136.jpg 136w, /images/image%201%20165 165w, /images/image%201%20286 286w">
为了简化问题 - 如果我可以替换以下 src 中的 n 个空格,那么我可以解决我的问题:<img src="/images/image any number of spaces.jpg" />
我认为唯一的解决方案是使用lookbehind,但由于我在javascript 中这样做,它不受支持,所以我很难过。我通常会使用类似:myText.replace(/src=".[^"]*"/gi,'%20') 的东西,但这会替换整个字符串。 See this example.
我怀疑这个问题无法解决(这只是一个临时措施,同时我们测试了 srcset 的影响,之后我可以从源头修复它) - 但我不知道我是否有什么问题我没想到这会让我实现我想要的。
【问题讨论】:
-
getElementsByTagName 获取图像,get/setAttribute 和 srcset 每个使用后者和 encodeURIComponent。
-
你是如何创建 HTML 的?你能发布你的代码吗?
-
HTML 来自第 3 方,因此我无法直接对其进行任何更改。它是一个返回的 HTML 字符串,其中包含我试图将其操作到 srcset 标记中的许多图像(除此之外,我能够对提要进行所有其他我需要的更改)。
标签: javascript regex replace spaces