=波波日志 > JavaScript/Ajax > 让innerHTML里的script跑起来=
让innerHTML里的script跑起来
直接设置容器的innerHTML,如果设置的内容里面包含了script代码块,是不会执行的,所以需要做一些处理
示例代码如下,firefox需要获取script标签,eval里面的内容,ie就简单了,在设置innerHTML前替换<script为<script defer就行了
示例代码如下,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>
<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】
相关文章
暂时没有评论!
发表留言

