数码资讯
innerHTML动态添加HTML代码,兼容多种浏览器脚本
选购提示
关注价格、性能、续航、售后和真实使用场景,理性比较后再下单。
症状:设置一个元素的innerHTML值时,如果提供的HTML代码包含JS脚本,这些脚本是无效的,或者是有效的在一些浏览器中,但它们在其他浏览器无效。
原因:不同的浏览器有不同的处理方法对innerHTML插入脚本。通过实践,总结出以下几方面:
IE,首先,脚本标签必须defer属性,接下来,在插入的时候,所有的节点必须在DOM树。
对于Firefox和Opera,在插入时间的innerHTML的节点不能在DOM树。
根据以上结论,innerHTML方法的一套共同给出:
复制代码代码如下所示:
*
*说明:跨浏览器设置innerHTML方法
*允许插入的HTML代码包含脚本和样式。
*参数:
*在EL的节点:DOM树,设置innerHTML
* htmlcode:插入HTML代码
*测试的浏览器:IE5 +,firefox1.5 +,opera8.5 +
* /
无功set_innerhtml =功能(EL,htmlcode)
{ var ua = navigator.useragent.tolowercase();
如果(ua.indexof('msie)或0 ua.indexof('opera)<0)
{ htmlcode = '即' + htmlcode;
htmlcode = htmlcode.replace(> / GI), / *)};
el.innerhtml = htmlcode;
el.removechild(EL。第一个孩子);
}
其他的
{ var el_next = el.nextsibling;
无功el_parent = el.parentnode;
el_parent.removechild(EL);
el.innerhtml = htmlcode;
如果(el_next)
el_parent.insertbefore(EL,el_next)
其他的
el_parent.appendchild(EL);
}
}
上面的代码也有一个问题:如果插入HTML代码包含document.write语句,整个页面就会被破坏。在这种情况下,你可以避免它重新定义document.write.the代码如下:
复制代码代码如下所示:
*
描述:定义document.write函数。
避免使用set_innerhtml,插入HTML代码包含document.write语句,使原有的页面被损坏。
* /
=(){ document.write函数
VaR的身体= document.getelementsbytagname('body){ 0 };
对于(var i = 0;i < arguments.length;i++){
参数=参数{ };
如果(typeof争论= = 'String'){
var el = body.appendchild(document.createelement('div '));
set_innerhtml(EL,论据)
}
}
}
原因:不同的浏览器有不同的处理方法对innerHTML插入脚本。通过实践,总结出以下几方面:
IE,首先,脚本标签必须defer属性,接下来,在插入的时候,所有的节点必须在DOM树。
对于Firefox和Opera,在插入时间的innerHTML的节点不能在DOM树。
根据以上结论,innerHTML方法的一套共同给出:
复制代码代码如下所示:
*
*说明:跨浏览器设置innerHTML方法
*允许插入的HTML代码包含脚本和样式。
*参数:
*在EL的节点:DOM树,设置innerHTML
* htmlcode:插入HTML代码
*测试的浏览器:IE5 +,firefox1.5 +,opera8.5 +
* /
无功set_innerhtml =功能(EL,htmlcode)
{ var ua = navigator.useragent.tolowercase();
如果(ua.indexof('msie)或0 ua.indexof('opera)<0)
{ htmlcode = '即' + htmlcode;
htmlcode = htmlcode.replace(> / GI), / *)};
el.innerhtml = htmlcode;
el.removechild(EL。第一个孩子);
}
其他的
{ var el_next = el.nextsibling;
无功el_parent = el.parentnode;
el_parent.removechild(EL);
el.innerhtml = htmlcode;
如果(el_next)
el_parent.insertbefore(EL,el_next)
其他的
el_parent.appendchild(EL);
}
}
上面的代码也有一个问题:如果插入HTML代码包含document.write语句,整个页面就会被破坏。在这种情况下,你可以避免它重新定义document.write.the代码如下:
复制代码代码如下所示:
*
描述:定义document.write函数。
避免使用set_innerhtml,插入HTML代码包含document.write语句,使原有的页面被损坏。
* /
=(){ document.write函数
VaR的身体= document.getelementsbytagname('body){ 0 };
对于(var i = 0;i < arguments.length;i++){
参数=参数{ };
如果(typeof争论= = 'String'){
var el = body.appendchild(document.createelement('div '));
set_innerhtml(EL,论据)
}
}
}
声明:本文内容用于数码产品信息整理与选购参考,具体价格、库存、售后政策以官方渠道和电商页面实时信息为准。