国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Javascript加載執行方法總結

Coding01 / 1896人閱讀

摘要:區別在于執行時機,是加載完成后自動執行,,而需要等待頁面完成后執行。一旦新的元素被添加到文檔,代碼將會被執行。這樣的好處是,可以下載但不是立即執行代碼,還有一個好處是兼容性好。最好無論文件是以什么樣的方式加載的。

Javascript在瀏覽器性能中,這可能是所有開發者比較關注的問題,因為Javascript有阻塞的特征,也就是當Javascript運行的時候,瀏覽器不會處理其他的任務。但是瀏覽器不可能只運行一個任務,但是同一時間又只能執行單個任務。

不管Javascript代碼是內聯的還是包含在一個外部文件中的,頁面的下載和解析就必須等待腳本完成,才能繼續向下執行,這樣的原因是因為腳本的執行可能會重新渲染頁面UI。我們典型的腳本函數是這樣的。如:

 

   Script Example 


    

當瀏覽器遇到一個

這是Javascript文件引入的例子。
但是這樣的寫法理論上是沒有任何問題的,但是這里就存在了性能和體驗的問題。上面的代碼加載了3個外部文件,每個文件在加載的過程中阻塞了頁面的解析,瀏覽器只有等待它們下載并運行了Javascript代碼之后,頁面才能繼續,這我們在上面已經提到過了。最致命的問題就是,把Javascript文件放在頂部,在加載Javascript文件比較慢的時候會出現空白頁,以至于用戶看不到頁面,更不要說交互網頁,推薦的辦法就是,把所有的Javascript文件,包括外鏈的文件擋在標簽底部位置,減少對整個頁面加載的影響。這里就不列出例子了。

2、延遲腳本

這個時候就 ## 標題文字 ##

如果瀏覽器不支持defer屬性,上面的代碼的運行順序是: 延遲-》當前-》加載完成。如果瀏覽器支持defer屬性,那么運行順序是:當前-》延遲-》加載完成。應該很直觀的就能看出區別。目前defer標簽目前已被所有主流瀏覽器支持

另外這不能不提的還有一個屬性:async。用于加載異步腳本,async和defer的相同點是采用并行下載,在下載的過程中都是不會產生阻塞。區別在于執行時機,async是加載完成后自動執行,,而defer需要等待頁面完成后執行。

3、動態腳本元素

DOM允許使用Javascript動態創建HTML支持的全部內容。如:

var script = document.createElement ("script");
script.type = "text/javascript";
script.src = "file1.js"; document.getElementsByTagName_r("head")[0].appendChild(script);

上面新的

LazyLoad也可以同時下載多個Javascript文件,并保證它們在所有瀏覽器上都能以正確的順序遠行,要加載多個Javascript文件,只需要在執行LazyLoad()函數時傳遞一個數組即可,如:



當然還有其他類庫,比如 LABjs 這里就不一一介紹了。

總結

將所有的

閱讀需要支付1元查看
<