亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

加載和執行腳本的順序

加載和執行腳本的順序

函數式編程 2019-06-06 13:41:16
加載和執行腳本的順序在html頁面中包含JavaScript的方式有很多種。我知道以下選項:內聯代碼或從外部URI加載包括在<head>或<body>標簽中[1,2]沒有,defer或async屬性(只有外部腳本)包含在靜態源中或由其他腳本動態添加(在不同的解析狀態下,使用不同的方法)不包括硬盤中的瀏覽器腳本,javascript:URI和onEvent-屬性[3],已經有16個選項可以讓JS執行,我相信我忘了一些東西。我不太關心快速(并行)加載,我對執行順序更感興趣(這可能取決于加載順序和文件順序). 有沒有好的(跨瀏覽器)包括所有案件的推薦信?例如:網址:http:/www.websiteOptimization.com只處理其中的6個,并且測試大部分是舊的瀏覽器。由于我擔心沒有,這里是我的具體問題:我有一些(外部)頭腳本用于初始化和腳本加載。然后,我有兩個靜態的,內聯的腳本在身體的末尾。第一種方法允許腳本加載器將另一個腳本元素(引用外部js)動態地追加到主體中。第二個靜態內聯腳本希望使用添加的外部腳本中的js。它能否依賴另一個已被執行(以及為什么:-)?
查看完整描述

3 回答

?
呼啦一陣風

TA貢獻1802條經驗 獲得超6個贊

瀏覽器將按照找到腳本的順序執行它們。如果調用外部腳本,它將阻塞頁面,直到加載和執行腳本為止。

為了檢驗這一事實:

// file: test.phpsleep(10);die("alert('Done!');");// HTML file:<script type="text/javascript" src="test.php"></script>

動態添加的腳本在附加到文檔后立即執行。

為了檢驗這一事實:

<!DOCTYPE HTML><html><head>
    <title>Test</title></head><body>
    <script type="text/javascript">
        var s = document.createElement('script');
        s.type = "text/javascript";
        s.src = "link.js"; // file contains alert("hello!");
        document.body.appendChild(s);
        alert("appended");
    </script>
    <script type="text/javascript">
        alert("final");
    </script></body></html>

警報的順序是“附加”->“你好!”->“最終”

如果在腳本中嘗試訪問尚未到達的元素(例如:<script>do something with #blah</script><div id="blah"></div>)那么您將得到一個錯誤。

總的來說,是的,您可以包括外部腳本,然后訪問它們的函數和變量,但前提是退出當前腳本。<script>標記并啟動一個新的。


查看完整回答
反對 回復 2019-06-06
  • 3 回答
  • 0 關注
  • 526 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號