asfman
android developer
posts - 90,  comments - 213,  trackbacks - 0
让innerHTML中的教本执行起来——在我们使用AJAX的时候,经常要用到innetHTML来更新对象的内容,但是对于更新的script脚本程序浏览器却无法执行……

在我们使用AJAX的时候,经常要用到innetHTML来更新对象的内容,但是对于更新的<script>脚本程序浏览器却无法执行,我前面AJAX初学常遇问题解答这篇文章曾提到过这个问题,它不执行的原因是:<script>标签只在浏览器第一次文档加载中被解析,下面介绍怎么样让<script>跑起来。
分析问题

既然<script>只在文档加载中才被解析,那么我就得调用document.write()方法来重新加载一次,但是这样的话原来页面的内容也会被覆盖掉了,所以不得不用IFRAME把document.write()装载起来。

解决问题
 var jsCode = 需要执行的JS代码
 var jsIframe = document.createElement("iframe");
 jsIframe.style.display = "none";//把jsIframe隐藏起来
 document.body.appendChild(jsIframe);
 with(window.frames[window.frames.length - 1]){
  document.open();
  document.write(jsCode); //执行JS代码
  document.close();
 }
 document.body.removeChild(jsIframe);//执行后删除iframe对象

这里需要注意一个问题,因为jsCode是在iframe中运行,所以所有的页面元素都在iframe父对象之下,要调用页面元素对象必须得用 parent.obj 这种方式。

另外一种方法:

用dom动态创建一个script对象
var script=document.createElement("script");

script.src="XXXX.js";
document.body.appendChild(script);

posted on 2006-06-24 11:24 汪杰 阅读(345) 评论(0)  编辑 收藏 引用 所属分类: javascript
只有注册用户登录后才能发表评论。

<2024年4月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

常用链接

留言簿(15)

随笔分类(1)

随笔档案(90)

文章分类(727)

文章档案(712)

相册

收藏夹

http://blog.csdn.net/prodigynonsense

友情链接

最新随笔

搜索

  •  

积分与排名

  • 积分 - 457575
  • 排名 - 6

最新随笔

最新评论

阅读排行榜

评论排行榜