让innerHTML中的script脚本执行起来

王朝html/css/js·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

在我们使用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);

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航