当前位置: 移动技术网 > IT编程>网页制作>CSS > 关于Data URLs svg图片显示出错和浏览器URL hash #

关于Data URLs svg图片显示出错和浏览器URL hash #

2019年04月17日  | 移动技术网IT编程  | 我要评论

二人顶三人,游胜白,蜜桃成熟4

在使用生成的svg图作为<img>标签是src值时,发现有部分浏览器显示异常,所以这里记录下

参考链接

data urls

https://developer.mozilla.org/zh-cn/docs/web/http/data_uris
url hash

https://developer.mozilla.org/zh-cn/docs/web/api/url/hash

<img src="data urls">中,data urls格式与显示情况如下:

//1. 部分浏览器不能正常显示
data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="50" height="50"><rect fill="#795548" x="0" y="0" width="100%" height="100%"></rect><text fill="#fff" x="50%" y="50%" text-anchor="middle" alignment-baseline="central" font-size="16" font-family="verdana, geneva, sans-serif">jack</text></svg>

//2. 采用base64编码svg,正常显示
data:image/svg+xml;base64,phn2zyb4bwxucz0iahr0cdovl3d3dy53my5vcmcvmjawmc9zdmciihdpzhropsi1mcigagvpz2h0psi1mci+phjly3qgzmlsbd0iizc5ntu0ociged0imciget0imcigd2lkdgg9ijewmcuiighlawdodd0imtawjsi+pc9yzwn0pjx0zxh0igzpbgw9iingrkyiihg9ijuwjsiget0intaliib0zxh0lwfuy2hvcj0ibwlkzgxliibhbglnbm1lbnqtymfzzwxpbmu9imnlbnryywwiigzvbnqtc2l6zt0imtyiigzvbnqtzmftawx5psjwzxjkyw5hlcbhzw5ldmesihnhbnmtc2vyawyipmphy2s8l3rlehq+pc9zdmc+

//3. 采用%23转义#,正常显示
data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="50" height="50"><rect fill="%23795548" x="0" y="0" width="100%" height="100%"></rect><text fill="%23fff" x="50%" y="50%" text-anchor="middle" alignment-baseline="central" font-size="16" font-family="verdana, geneva, sans-serif">jack</text></svg>

//4. 采用rgb代替hex color,正常显示
data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="50" height="50"><rect fill="rgb(121,85,72)" x="0" y="0" width="100%" height="100%"></rect><text fill="rgb(255,255,255)" x="50%" y="50%" text-anchor="middle" alignment-baseline="central" font-size="16" font-family="verdana, geneva, sans-serif">jack</text></svg>

上面给出的data urls中第一个与其他的不同之处就是包含了url的敏感字符#,其被作为hash使用,用于浏览器网页内部的网页位置指定标识符,#后面出现的任何字符,都会被浏览器解读为位置标识符。

这里我用以上链接直接使用浏览器访问,73版谷歌浏览器和66版火狐浏览器对于第一个data urls给出的结果都是解析异常,这里我的猜测(意淫)就是这种data urls其实是浏览器内部识别了url标识,其又充当了一台服务器,对当前data urls进行解析,之后内部直接给出数据。而它们在处理data:image/svg+xml时将#后面的字符串当做为位置标识符,没有将#后数据提交至浏览器内部解析器(我认为的模拟服务器)中,所以就出现了数据丢失解析异常。

以上分析纯属个人猜测。反正这里需要注意的就是,采用data urls时有可能出现url特殊字符,最好能够对其进行编码,或者转义。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网