我有兩個不同的JavaScript。我只想在加載這兩個js文件或腳本之後才能啓動一個函數,因爲它們需要訪問彼此的函數和/或變量。如何加載兩個JavaScript文件?
我不知道哪一個會先載入。
這樣做的正確方法是什麼? (A)不同步加載數據,並且腳本(B)需要等到所有數據加載並啓動才能繼續執行(例如,youtube視頻從(A)加載並需要開始播放之前(B)可以執行)
我有兩個不同的JavaScript。我只想在加載這兩個js文件或腳本之後才能啓動一個函數,因爲它們需要訪問彼此的函數和/或變量。如何加載兩個JavaScript文件?
我不知道哪一個會先載入。
這樣做的正確方法是什麼? (A)不同步加載數據,並且腳本(B)需要等到所有數據加載並啓動才能繼續執行(例如,youtube視頻從(A)加載並需要開始播放之前(B)可以執行)
<script>
一般同步加載。文檔的評估停止等待腳本加載並執行。它是這樣處理的,因爲腳本可能會通過使用諸如document.write()
之類的東西來干擾文檔,所以解析器無法確定,文檔的其餘部分保持其當前顯示的方式。
因此,要在腳本加載完成後執行腳本,只需將第三個<script>
標記放在啓動代碼的後面,即加載腳本。
<script src="scriptA.js"></script>
<script src="scriptB.js"></script>
<script>
// start something of scriptB
scriptB.start();
</script>
其中之一是一個腳本,從Youtube加載異步數據和更多腳本,所以我必須等到整個視頻加載啓動一個函數。 – mgPePe
@mgPePe然後,你可能不得不使用'setInterval()'來添加一個函數來檢查結果是否已經存在,因爲即使腳本的onload事件也不會捕獲腳本的異步部分。 – Sirko
所以如果我明白了,B會先走,設置變量'check = false',然後設置間隔,看看檢查是否仍然是假的。一個會加載和onload事件將有'check = true',這將觸發我需要的任何東西,是嗎? – mgPePe