当前位置: 首页 > 图文教程 > 网络编程 > Javascript > 让innerHTML的脚本也可以运行起来

Javascript
ext实现完整的登录代码
ext form 表单提交数据的方法小结
收藏,对比功能的JS部分实现代码
js可突破windows弹退效果代码
js获取div高度的代码
JS支持带x身份证号码验证函数
javascript的indexOf忽略大小写的方法
js活用事件触发对象动作
Javascript访问html页面的控件的方法详细分析
jQuery formValidator表单验证插件开源了 含API帮助、源码、示例
js仿淘宝的拼音检索特效代码
鼠标放上去触发一个javascript提示框效果代码
FF下zoom的替代方案 单位em
json编写简单一例
js取得2008奥运金牌排名
js常用函数2008-8-16整理
一些不错的js函数ajax
javascript:void(0)的真正含义实例分析
解决AJAX中跨域访问出现''没有权限''的错误
比较详细的XMLDOM对象方法详解

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-12   浏览: 342 ::
收藏到网摘: n/a

最近在脑子一直在想pjblog重构的问题.当然重构前,必须把所有需要做的东西想清楚.其中想到一个js改进的内容,需要innerHTML后的脚本也可以运行.但是尝试了一下.发现IE下直接innerHTML的脚本无法执行. 尝试了几次发现,插入的HTML里,<script>前面有其他对象,并且script 设置了 defer , 这样的脚本innerHTML被IE执行了. ,但是这招对于firefox不灵~~ 后来找了一些资料发现 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)
}
}