使用innerHTML属性向head中插入字符时报“无法设置 innerHTML 属性。 该操作的目标元件无效”的错误
向head中动态插入script文件,代码如下:
var sc = document.createElement("script"); sc.src = "//www.chinanews.com/ie8/js/json2.min.js"; var head = document.getElementsByTagName("head")[0]; head.appendChild(sc);
但如下要插入的代码如下:
<!--[if lt IE 9]> <script src="/ie8/js/json2.min.js"> </script> <![endif]-->
则要用到HTML DOM 的innerHTML属性,将上述代码存在一串字符串中,再放入head中
var jsonStr = '<!--[if lt IE 9]><script src="/ie8/js/json2.min.js"></script><![endif]-->'; var head = document.getElementsByTagName("head")[0]; head.innerHTML = head.innerHTML + jsonStr;
获取之前head中的字符,并添加上新的字符串,但是在IE中则报“无法设置 innerHTML 属性。 该操作的目标元件无效”的错误。
http://w3help.org/zh-cn/causes/BX9046
最后通过判断浏览器是否是ie及版本,动态添加js文件
if ((navigator.userAgent.indexOf('MSIE') >= 0) && (navigator.userAgent.indexOf('Opera') < 0)){//判断是否是ie浏览器 if(isIEVer(7) || isIEVer(8) || isIEVer(6)){ json2 = document.createElement("script"); json2.src = "/ie8/js/json2.min.js"; head.appendChild(json2); } }