跨浏览器的设置innerHTML方法,支持插入代码中包含script、style标签

跨浏览器的设置innerHTML方法,支持插入代码中包含script、style标签

Mar 23, 02:45 PM by kenxu

很多人在使用 innerHTML 插入代码的时候都会遇到这样一个问题:代码中包含的 script 不能运行。andot 的 让插入到 innerHTML 中的 script 跑起来 给出了一个很好的解决方案,考虑得很细致。这里给出另外一个更简单解决方案,充分利用了浏览器本身的特性。

/*
* 描述:跨浏览器的设置innerHTML方法。
*     允许插入的html代码中包含script和style。
*     经测试的浏览器:ie5+, firefox1.5+, opera8.5+。
* 作者:kenxu <ken@ajaxwing.com>
* 日期:2006-03-23
* 参数:
*     el: 合法的dom树中的节点。
*     htmlCode: 合法的html代码。代码中可包含script和style。
* 注意:el必须是dom树中的节点!!!
*/
var setInnerHTML = function (el, htmlCode) {
  var ua = navigator.userAgent.toLowerCase();
  if (ua.indexOf('msie') >= 0 && ua.indexOf('opera') < 0) {
    htmlCode = '<div style="display:none">for IE</div>' + htmlCode;
    htmlCode = htmlCode.replace(/<script([^>]*)>/gi, '<script$1 defer="true">');
    el.innerHTML = htmlCode;
    el.removeChild(el.firstChild);
  } else {
    var el_next = el.nextSibling;
    var el_parent = el.parentNode;
    el_parent.removeChild(el);
    el.innerHTML = htmlCode;
    el_next ? el_parent.insertBefore(el, el_next) : el_parent.appendChild(el);
  }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值