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的事。

为了不影响后续代码,解决途径:

  1. 保证调用时的参数为合法URL

  2. try包起来