1. 程式人生 > >Javascript中defer屬性解析

Javascript中defer屬性解析

在傳統的瀏覽器其解析中,當HTML解析器遇到一個指令碼,它必須按常規方法,終止對文件的解析並等待指令碼執行。為了解決這個問題,HTML4標準定義了defer,通過defer來提示瀏覽器可以繼續解析HTML文件,並延遲指令碼執行。這種延遲在指令碼從外部檔案載入時非常有用,讓瀏覽器不必等待外部檔案全部載入之後才繼續執行,能有效提高效能。IE是目前唯一支援defer屬性的瀏覽器,但IE並沒有正確的實行defer屬性,因為延遲的指令碼從事被延遲到文件結束,而不是隻延遲到下一個非延遲指令碼。這意味著,IE中延遲的指令碼的執行順序相當混亂,並且不能定義任何後面非延遲指令碼必須的函式和變數。IE中所有defer的指令碼執行時間應該是HTML文件樹建立以後,window.onload之前。