以下是示例https://jsfiddle.net/ry2jaxdu/7/
使用Firefox或IE打开,请参阅以CIrKDQUAADs=")
结尾。有")
但如果使用Chrome,Opera或Safari打开,请参阅以CIrKDQUAADs=)
结尾。只有)
,没有"
。
我需要删除")
。
使用的代码如mod_val = mod_val.replace('")', '');
至于Chrome,Opera和Safari代码不同,还添加了mod_val = mod_val.replace(')', '');
但有可能base64
代码的剩余部分包含)
。
所以问题是如果最后一个字符是)
?
另一个不那么重要的问题:为什么上面提到的浏览器存在差异?
更新...同时写了问题回答mod_val = mod_val.replace(/\)$/, '');
但仍然是为什么会出现这种差异的第二个问题......
答案 0 :(得分:2)
这就是如何通过不同的浏览器解析背景图像CSS规则...有些人会以一种方式解析它,其他人会用另一种方式解析它......
background-image:url('logo.jpg');
请注意网址中的单引号,但使用javascript会返回解析后的版本...
//In IE
background-image='url("logo.jpg")'
//In Chrome
background-image='url(logo.jpg)'
答案 1 :(得分:1)
你可以剥离url(
并跟踪)
,如下所示:
base64_img.replace(/^url\("?|"?\)$/g, '')
答案 2 :(得分:1)
浏览器的不同之处并非完全基于字符及其base64。这是浏览器处理url
的{{1}}参数的方式。
例如:
Chrome会移除机箱并选择参数的内容,并以自己的方式将其放在没有任何引号的情况下
Firefox选择内容并始终用双引号background-image
。