繁体   English   中英

使用document.write时的Javascript顺序

[英]Javascript sequentiality when using document.write

我对在特殊情况下执行javascript的顺序顺序有疑问,如下所示。 我的页面头部包含的js文件( main.js )有时需要动态包含另一个js文件,如:

document.write('<script src="userdata.js"></script>');

在第二个文件中定义了一个变量xmlFix但是,如果我稍后尝试在main.js中引用此变量,它将失败。 为什么? userdata.js什么时候执行?

userdata.js将在当前脚本完成后执行。 JavaScript确实按顺序进行,但您正在进行需要处理的DOM更改。

假设以下代码:

HTML:
 <script src="a.js"></script> <script src="b.js"></script> 
a.js:
baz();
b.js:
 baz(); 
c.js:
 qux(); 

功能将按如下方式执行:

 foo(); bar(); qux(); baz(); 

这是因为a.js需要在浏览器移动到下一个DOM元素之前完成执行,该元素将是c.js ,然后是b.js

如果需要a.js代码来使用b.jsc.js定义的变量/函数,则需要在脚本执行完毕后使用回调。 对于vanilla JS来说,向window.onload添加一个回调比document.readystatechange更简单,更一致,但后者的性能更高一些。

如果你正在使用jQuery库,通常会使用“document ready”事件(它应该是这样的: jQuery(function ($) {...code here...});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM