Javascript 中的defer屬性分析及應用實例
當前位置:點晴教程→知識管理交流
→『 技術文檔交流 』
[p]文檔上說defer中的代碼不立即執行,頁面會繼續載入,那defer中的代碼具體在什么時候執行呢?在全部javascript代碼載入之后?頁面載入之后?onload之前還是之后?[/p]
[p]答案是:[/p]
[p]并不是說在網頁載入時不執行,可以在網頁寫一個script.然后定義它,但是在載入時它還是執行了,[br]后來在找其它的東東時發現,因為它不有個子, 不知它是如何用,[br]原來它是在你的網頁已截入完成后,你想動態添加一個新的";[br]那么當你調用你這個新定義的東東就會出錯,說還未定義,當你在上面的代碼加入defer時那么你就能成功調用它,[br]在下面的代碼中你可以試下把它去掉, defer>";,那么你就會發現問題![br][br]";[br]scriptdiv.innerhtml = shtml + sscript;[br]} [br][br][br][br][br][/p]
[p]//defer屬性指示該段腳本不會改變文檔的內容。在文檔完全顯示之前,js解釋器不執行這段代碼。[br]具體到這個例子,因為js不允許動態生成js代碼,所以去掉defer后產生的代碼會被認為是非法的。加上defer后的代碼,會被解釋器認為是載入頁面的時候跳過去的,可以執行。[/p]
[p][br]中的defer作用是文檔加載完畢了再執行腳本,這樣回避免找不到對象的問題[/p]
[p][br][br][br][br][/p]
[p][/p]
[p]加上 defer 等于在頁面完全在入后再執行,相當于 window.onload ,但應用上比 window.onload 更靈活![/p]
[p]defer是腳本程序強大功能中的一個“無名英雄”。它告訴瀏覽器script段包含了無需立即執行的代碼,并且,與src屬性聯合使用,它還可以使這些腳本在后臺被下載,前臺的內容則正常顯示給用戶。[br]--但是 文檔加載完畢了再執行腳本[/p]
[p]最后請注意兩點:[br]1、不要在defer型的腳本程序段中調用document.write命令,因為document.write將產生直接輸出效果。[br]2、而且,不要在defer型腳本程序段中包括任何立即執行腳本要使用的全局變量或者函數。[/p]
[p]一個常用的優化性能的方法是:當腳本不需要立即運行時,在
Copyright 2010-2025 ClickSun All Rights Reserved |