[英]document.write() in IE executive order is not the same by others
<script>
document.write("before write h1.js"+"<br/>");
document.write("<script src='h" + "1.js'><\/script>");
document.write("after write h1.js" +"<br/>");
</script>
h1.js文件:
这是h1.js
在IE中,结果将是:
Firefox Chrome Safari Opera:
我如何编写脚本以使其在所有浏览器中都具有相同的顺序。
这在所有浏览器中都应该相同:
<script>
document.write('before h1.js');
</script>
<script src="h1.js"></script>
<script>
document.write('after h1.js');
</script>
可以这样想:IE执行脚本,将新内容添加到document
,然后检查内容。
所以,如果你h1.js
脚本写入文件,那么这个代码将你的JavaScript完成后执行。 这是由于JavaScript的同步性。
如果要避免这种情况,通常的解决方案是让h1.js
定义一个可以在适当时间调用的函数。 然后,您可以编写:
<script>document.write("<script src='h" + "1.js'><\/script>");</script>
<script>
document.write("before write h1.js"+"<br/>");
document.write(h1());
document.write("after write h1.js" +"<br/>");
</script>
第一个脚本块允许您加载函数。 完成后,IE将解析新代码。 然后它将运行第二个代码块,并且将定义函数。
查看Steve Souders的这篇博客文章,以了解异步加载脚本并确保顺序的技术问题。
来自同一参考
document.write脚本标签 –使用document.write将HTML写入页面。 这只会加载脚本,而不会阻止IE。
这就是为什么您能够看到如此不同的执行顺序的原因。 从执行中after write h1.js
脚本加载没有阻塞。 它仅在IE中发生
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.