=波波日志 > JavaScript/Ajax > 让innerHTML里的script跑起来=

让innerHTML里的script跑起来

  直接设置容器的innerHTML,如果设置的内容里面包含了script代码块,是不会执行的,所以需要做一些处理

  示例代码如下,firefox需要获取script标签,eval里面的内容,ie就简单了,在设置innerHTML前替换<script为<script defer就行了
+展开
-HTML
<div id="dv"></div>
<script>
window.onload=function(){
  var dv=document.getElementById('dv');
  var s='a23<script>alert(123)</'+'script>afafe<script>alert(456)</'+'script>';  
  if(window.navigator.userAgent.indexOf("Firefox")>=1)  { //针对FF
    dv.innerHTML=s;
    var scripts = dv.getElementsByTagName("script"); 
    for(var i=0;i<scripts.length;i++){ //一段一段执行script 
        eval(scripts[i].innerHTML); 
    } 
  }else if(window.navigator.userAgent.indexOf("MSIE")!=-1) { 
    s=s.replace(/<script/gi,"<script defer ")//因为 <script defer>可以在IE上直接运行,所以把所有的script标签都替换成

defer标记的script 
    dv.innerHTML=s; 
  } 
}
</script> 
类别:JavaScript/Ajax 作者:波波 日期:2009-07-01 【评论:0】 
 
暂时没有评论!
发表留言
  • *昵称:
  • 头像:
  • 电子邮件: [留下您的邮件,方便管理员回复您。]
  • 个人网站: *验证码:
声明:本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载或引用的作品侵犯了您的权利,请通知我们,我们会及时删除!
Powered by showbo,©2012,桂ICP备05005887号 京公网安备1101055090