innerHTML执行js代码,向innerHTML中写入并执行script脚本并让他运行起来,通常网站用到innerHTML加载的js脚本网站script没有运行,要想让他远行的方法有2种。
innerHTML中没有执行script脚本的原因分析:
< script>标签只在浏览器第一次文档加载中被解析,要不就要不就要有事件去触发以前页面加载过的js函数或是方法。
script脚本在innerHTML中显示了没有运行的原因分析了下面介绍2种方法去解决
1、dom动态创建一个script对象var script=document.createElement("script");
script.src="XXXX.js"; //这里是引入的一个外部js文件 当然也可以直接写js代码在这
// alert('script脚本运行没有呢?');
document.body.appendChild(script);
2、如页面加载完要想页面在执行刚innerHTML的js代码,我们可以把这个js代码放到一个子窗口中让他运行,在用js删除iframe具体如下。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 这种方式。
除了上面的2种方法还有一种是
有人说这种可以,但实际上好像不得行,大家可以试一下,就是在script 标签后加一个 defer 属性来对脚本执行进行延迟,直到页面加载为止。