IE下img标签setAttribute的问题
这个问题是在测试个人信息控件的时候发现的,后台返回测试账号的头像图片url为"%I0O96S]I6X9S(66CICZ1)N.jpg"
将头像图片的src设置为该值时IE下报错,导致后续代码无法执行,控件未能渲染。
IE8、9、10下对imgsetAttribute('src', str)
时,若str为非法url(如'%B'),则报错“参数无效。”
结果就是值会被设置上去。document.getElementById('img').attributes.getNamedItem('src').value
为'%B',但在页面中图片的表现不会变化,看上去就像没有设置上去。
影响是因为出错了,所以后续的代码不会继续执行。
IE7不会报错,其他表现与IE8/9/10类似。
chrome不会报错,且图片会显示为加载失败的表现。
这里实验的结果是凡decodeURI(str)失败的字符串则会报错,估计IE就是在setAttribute中额外做了decodeURI的事。
为了不影响后续代码,解决途径:
-
保证调用时的参数为合法URL
-
try包起来