讓innerHTML的腳本也可以運行起來
更新時間:2006年07月01日 00:00:00 作者:
最近在腦子一直在想pjblog重構(gòu)的問題.當然重構(gòu)前,必須把所有需要做的東西想清楚.其中想到一個js改進的內(nèi)容,需要innerHTML后的腳本也可以運行.但是嘗試了一下.發(fā)現(xiàn)IE下直接innerHTML的腳本無法執(zhí)行. 嘗試了幾次發(fā)現(xiàn),插入的HTML里,<script>前面有其他對象,并且script 設(shè)置了 defer , 這樣的腳本innerHTML被IE執(zhí)行了. ,但是這招對于firefox不靈~~ 后來找了一些資料發(fā)現(xiàn) firefox 把對象重新 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)點擊按鈕移動view標簽的位置功能示例【附demo源碼下載】
這篇文章主要介紹了微信小程序?qū)崿F(xiàn)點擊按鈕移動view標簽的位置功能,涉及微信小程序事件綁定與this.setData動態(tài)修改data數(shù)值進而改變view標簽樣式的相關(guān)操作技巧,需要的朋友可以參考下2017-12-12JavaScript實現(xiàn)網(wǎng)頁留言板功能
這篇文章主要為大家詳細介紹了JavaScript實現(xiàn)網(wǎng)頁留言板功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-11-11