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