Chrome& Firefox以不同的方式解释url(),使.replace()正则表达式具有挑战性

时间:2010-11-27 03:57:05

标签: javascript regex replace

以下需要删除先前从url('在DOM中的元素对象上返回的.css('background-image')部分字符串,这在Firefox中非常有效,但在Chrome中无效。

// example value of artworkURL: url('http://somewebsite/picture.jpg')
artworkURL = artworkURL.replace(/url\(\'/g,'');

我发现这是因为Chrome从''删除url('picture.jpg')但是,从正则表达式中删除\'会导致Firefox中断,因为Firefox将''替换为{ {1}}但仍然理解正则表达式。即使删除CSS中的括号也会导致Firefox重新呈现""

如何让两种浏览器及其各种合规性保持愉快?

1 个答案:

答案 0 :(得分:2)

尝试:

artworkURL = artworkURL.replace(/url\(['"]?/g,'');

这将删除'(如果它存在),甚至考虑可能使用"的浏览器。可以使用类似的正则表达式来删除结尾:

artworkURL = artworkURL.replace(/['"]?)/g,'');