在JavaScript中,脚本保证在文档中以前的脚本完成运行后运行 请考虑以下片段: <!DOCTYPE html> <html> <head> <script src="script_1.js"></script> <script src="script_2.js"></script> </head> <body> <script> //script_3 </script> </body> </html> //脚本3
如果在JavaScript中,脚本保证在文档中以前的脚本完成运行后运行 请考虑以下片段: <!DOCTYPE html> <html> <head> <script src="script_1.js"></script> <script src="script_2.js"></script> </head> <body> <script> //script_3 </script> </body> </html> //脚本3,javascript,execution,Javascript,Execution,如果script_1和script_2中没有异步代码,一个人能否确保script_3仅在script_1完成执行后运行,而script_2c仅在script_1完成后运行 因为现在我有一种情况,script\u 3在script\u 2完成之前不时地开始,而且似乎所有的脚本都没有任何异步代码。但我不能用一个简单的例子来再现这种情况 多谢各位 如果脚本_1和脚本_2中没有异步代码,是否可以确保脚本_3仅在脚本_1和脚本_2完成执行后运行,脚本_2c仅在脚本_1完成后运行 是,前提是所有脚本标记都不
script_1
和script_2
中没有异步代码,一个人能否确保script_3
仅在script_1
完成执行后运行,而script_2
c仅在script_1
完成后运行
因为现在我有一种情况,script\u 3
在script\u 2
完成之前不时地开始,而且似乎所有的脚本都没有任何异步代码。但我不能用一个简单的例子来再现这种情况
多谢各位
如果脚本_1和脚本_2中没有异步代码,是否可以确保脚本_3仅在脚本_1和脚本_2完成执行后运行,脚本_2c仅在脚本_1完成后运行
是,前提是所有脚本标记都不使用
请注意,这与此非常不同,但是:
<script src="script1.js"></script>
<script src="script3.js"></script>
…在这种情况下,script2.js
与script3.js
的顺序是混乱的
但是,如果
script1.js
使用document.write
来输出script2.js
script标记,这将类似于标记版本,并且顺序将得到保证(1,然后2,然后3)。是的,因为代码中没有defer
或任何其他内容,脚本保证按顺序运行,在所有浏览器中。如何确切地说,浏览器似乎没有异步代码?如果你能发布他们的内容,即使你不能减少示例代码,那就太好了。@Bergi,我不能在这里发布代码。第一个原因是它相当大,第二个原因是我不允许透露这个代码。现在,在回答之后,我认为这些文件有一些异步代码,我只是暂时没有发现它。
var script = document.createElement('script');
script.src = "script2.js";
document.getElementsByTagName('script')[0].parentNode.appendChild(script);