1. 程式人生 > >讓innerHTML的js指令碼執行起來 總結

讓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);