2011-12-26 63 views
26

根據http://caniuse.com/script-defer,大多數瀏覽器支持script標記的defer屬性。

我想知道<script defer src="...">指定的腳本是在jQuery的$(document).ready()之前還是之後執行的?主要的現代瀏覽器(Chrome,Firefox,IE等)是否按執行順序保持一致,還是有所不同?

回答

14

。我使用Firefox和Chrome對它進行了測試,兩者都具有與腳本序列無關的相同行爲。

我猜其他瀏覽器上的行爲可能會根據它們的實現而改變,所以它總是不確定的。

編輯:事實證明,defer屬性應該與外部JavaScript文件一起使用。我編輯小提琴來顯示這一點,顯然有相同的結果。

更新小提琴這裏:http://jsfiddle.net/RNEZH/15/

+3

在Safari中的結果相同。 – Charlie 2011-12-26 19:44:34

+2

Opera中的結果相同,但不是隻有外部腳本纔有意義的延遲屬性?我不認爲的確有意義。 – Bergi 2011-12-26 19:52:18

+0

@Bergi,不論外部與否,'defer'屬性都是爲了推遲腳本的執行。你認爲什麼沒有意義? – 2011-12-26 19:55:18

12

defer屬性具有很好的write-up and analysis另外請參閱帖子的評論,瞭解有關defer如何在HTML5中重新定義的更多信息。

我的結論:defer太依賴於瀏覽器指望。因此使用jQuery doc ready技術。

換句話說,jQuery的一個重要原因是覆蓋瀏覽器的不一致性。推遲是另一個這樣的不一致,應該避免良好的書面頁面。在此基礎上小提琴我不得不說jQuery的$(document).ready()執行defer聲明腳本

+0

我沒有看到任何地方的評論說,在如何推遲信息已在HTML5中重新定義。 – nilskp 2012-08-23 12:57:30

5

簡單,script$(document).ready()之前defer是否使用與否,幾乎所有的主流瀏覽器supportdefer執行。

但對於被保險起見,我鼓勵你同時使用$(document).ready()defer。 那麼爲什麼defer?因爲它可以幫助網頁迅速出現(如外部腳本加載並行),並在谷歌的網頁速度的工具一個非常重要的因素,一個良好的細節可以在這裏找到http://code.google.com/speed/page-speed/docs/payload.html#DeferLoadingJS