让innerHTML的js脚本运行起来 总结

本文总结了三种方法在JavaScript中通过innerHTML运行脚本:在IE中使用带有defer属性的script标签,利用IFrame装载document.write(),以及动态创建script对象。每个方法都针对不同的浏览器进行了优化。
摘要由CSDN通过智能技术生成

让innerHTML的js脚本运行起来 总结

网上搜集的一些方法:

1、IE中插入的HTML里,<script>前面有其他对象,并且script 设置了 defer ;

 firefox 把对象重新 append 或者 insertBefore 一次

var fillHTML = function (el,HTMLString)

{
    if (!el) return;
    if (window.ActiveXObject)

   { //For IE
        el.innerHTML = "<img style='display:none'/>" + HTMLString.replace(/<script([^>]*)>/ig, '<script$1 defer>');
        el.removeChild(el.firstChild)
    }

   else

   { //For Mozilla,Opare
        var nSibling = el.nextSibling;
        var pNode = el.parentNode;
        pNode.removeChild(el);
        el.innerHTML = HTMLString;
        pNode.insertBefore(el,nSibling)
    }

}


2、用IFRAME把document.write()装载起来

var jsCode = 需要执行的JS代码


var jsIframe = document.createElement("iframe"); 


jsIframe.style.display = "none";//把jsIframe隐藏起来


document.body.appendChild(jsIframe); 


with(window.frames[window.frames.length - 1])

{

document.open();

document.write(jsCode); //执行JS代码
document.close();

}
document.body.removeChild(jsIframe);//执行后删除iframe对象


3、用dom动态创建一个script对象

var script=document.createElement("script");


script.src="XXXX.js";


document.body.appendChild(script);



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值