簡體   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