让innerHTML的脚本也可以运行起来

时间:2021-07-13 19:05:16
    最近在脑子一直在想pjblog重构的问题.当然重构前,必须把所有需要做的东西想清楚.其中想到一个js改进的内容,需要innerHTML后的脚本也可以运行.但是尝试了一下.发现IE下直接innerHTML的脚本无法执行. 尝试了几次发现,插入的HTML里,<script>前面有其他对象,并且script 设置了 defer , 这样的脚本innerHTML被IE执行了. 让innerHTML的脚本也可以运行起来,但是这招对于firefox不灵~~ 让innerHTML的脚本也可以运行起来 后来找了一些资料发现 firefox 把对象重新 append 或者 insertBefore 一次就可以执行里面的脚本了.

让innerHTML的脚本也可以运行起来 程序代码
让innerHTML的脚本也可以运行起来var fillHTML = function (el,HTMLString) {
让innerHTML的脚本也可以运行起来    if (!el) return;
让innerHTML的脚本也可以运行起来    if (window.ActiveXObject) { //For IE
让innerHTML的脚本也可以运行起来让innerHTML的脚本也可以运行起来        el.innerHTML = "
< img  style ='display:none' /> " + HTMLString.replace(/ < script ([^ > ]*)>/ig, '<script$1 defer>');
让innerHTML的脚本也可以运行起来        el.removeChild(el.firstChild)
让innerHTML的脚本也可以运行起来让innerHTML的脚本也可以运行起来    } 
else //For Mozilla,Opare
让innerHTML的脚本也可以运行起来
        var nSibling = el.nextSibling;
让innerHTML的脚本也可以运行起来        
var pNode = el.parentNode;
让innerHTML的脚本也可以运行起来        pNode.removeChild(el);
让innerHTML的脚本也可以运行起来        el.innerHTML 
= HTMLString;
让innerHTML的脚本也可以运行起来        pNode.insertBefore(el,nSibling)
让innerHTML的脚本也可以运行起来    }

让innerHTML的脚本也可以运行起来}
让innerHTML的脚本也可以运行起来

作者:puterjam 来自pjhome