讓innerHTML的腳本也可以運(yùn)行起來(lái)
更新時(shí)間:2006年07月01日 00:00:00 作者:
最近在腦子一直在想pjblog重構(gòu)的問(wèn)題.當(dāng)然重構(gòu)前,必須把所有需要做的東西想清楚.其中想到一個(gè)js改進(jìn)的內(nèi)容,需要innerHTML后的腳本也可以運(yùn)行.但是嘗試了一下.發(fā)現(xiàn)IE下直接innerHTML的腳本無(wú)法執(zhí)行. 嘗試了幾次發(fā)現(xiàn),插入的HTML里,<script>前面有其他對(duì)象,并且script 設(shè)置了 defer , 這樣的腳本innerHTML被IE執(zhí)行了. ,但是這招對(duì)于firefox不靈~~ 后來(lái)找了一些資料發(fā)現(xiàn) firefox 把對(duì)象重新 append 或者 insertBefore 一次就可以執(zhí)行里面的腳本了.
程序代碼
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)
}
}
程序代碼
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)
}
}
相關(guān)文章
微信小程序?qū)崿F(xiàn)點(diǎn)擊按鈕移動(dòng)view標(biāo)簽的位置功能示例【附demo源碼下載】
這篇文章主要介紹了微信小程序?qū)崿F(xiàn)點(diǎn)擊按鈕移動(dòng)view標(biāo)簽的位置功能,涉及微信小程序事件綁定與this.setData動(dòng)態(tài)修改data數(shù)值進(jìn)而改變view標(biāo)簽樣式的相關(guān)操作技巧,需要的朋友可以參考下2017-12-12js判斷ie版本號(hào)的簡(jiǎn)單實(shí)現(xiàn)代碼
本篇文章主要是對(duì)js判斷ie版本號(hào)的簡(jiǎn)單實(shí)現(xiàn)代碼進(jìn)行了介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2014-03-03inquirer.js一個(gè)用戶與命令行交互的工具詳解
這篇文章主要介紹了inquirer.js一個(gè)用戶與命令行交互的工具詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-05-05JavaScript實(shí)現(xiàn)網(wǎng)頁(yè)留言板功能
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)網(wǎng)頁(yè)留言板功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-11-11