2011-07-05 45 views
1

我試圖在HTML頁面中儘早執行一些內聯​​JavaScript,儘可能在頁面處理中使用外部.js文件中的庫函數。HTML文檔頭部的外部腳本是否保證在正文內包含的腳本之前執行?

雖然我總是看到將庫腳本放在首位,並且客戶端腳本似乎能夠正常工作,但我無法在任何地方找到包含文檔頭部的外部腳本的文檔在位於文檔正文內的腳本之前運行(w3schools網站除外,但它們不算作爲有信譽的參考)

爲了說明,我想知道關於HTML的用戶代理行爲,像這樣:

<html> 
    <head> 
     <script type="text/javascript src="libraryModule.js"></script> 
    </head> 
    <body> 
     <script type="text/javascript"> 
     // is this guaranteed to run after the external script? 
     // or is it possible this module that the external library 
     // adds to the global namespace won't be there yet? 
     var result = ModuleInExternalLibrary.DoLibraryThing(); 
     </script> 
    </body> 
</html> 

這是記錄在任何地方嗎?我無法在W3C規範中找到任何內容,也沒有任何好的文章總結了所有主流瀏覽器的這一領域的行爲。請提供一個鏈接。

我堅持不得不等待,直到onload事件觸發,以保證外部腳本已經執行?

回答

5

出現在<script></script>標籤之間的JavaScript語句按照外觀順序執行。所以是的,這是有保證的,除非你正在做一些聰明的事情,像延期加載或類似的東西。

Execution of JavaScript Programs

+0

謝謝。我的客戶已經阻止了您在他們的網絡上鍊接的網址,但我稍後會檢查它。在一個相關的筆記,我猜外部腳本標記阻止執行其他標記,而源提取?那麼執行順序簡單地歸結爲一個線程處理的東西,因爲它顯示在HTML上下?我找不到外部腳本如何在w3c規範中執行的描述。 –