日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
讓瀏覽器非阻塞加載javascript的幾種方式

本文主要介紹讓瀏覽器非阻塞加載javascript的幾種方式。

通常大多數(shù)瀏覽器是并行下載資源的,但由于外部腳本的特殊性例如通過腳本改變文檔的DOM結構、腳本之間的存在依賴關系、使用document.write 向頁面輸出HTML等。瀏覽器為了確保正確執(zhí)行腳本和呈現(xiàn)布局在瀏覽器加載和執(zhí)行完成它之前會完全阻塞頁面后續(xù)內(nèi)容的呈現(xiàn)和其他資源的加載。

在頁面的加載過程中如果可以做到內(nèi)容的逐步呈現(xiàn)?,對于良好的用戶體驗來說是非常重要的。通常我們也會在wondow對象的onload事件處理函數(shù)中做一些事情,但由于腳本阻塞加載和呈現(xiàn)的特性這一方面增加了頁面載入時間推遲了onload事件的觸發(fā),另一方面也延遲了用戶所期待的反饋。這就需要我們使用一些方法來讓瀏覽器以非阻塞的方式加載外部腳本。

一 使用XMLHttpRequest對象異步方式加載外部腳本。

這種方式好處是觸發(fā)較少的瀏覽器忙指示器,能夠被所有現(xiàn)代瀏覽器的所支持。不足的之處在于由于瀏覽器的跨域安全機制所以只能允許加載同域下外部腳本。另外如果多個腳本之間存在依賴關系的話,需要使用編寫相關的隊列管理腳本來控制多個腳本的執(zhí)行順序。

二 使用Javascript來動態(tài)創(chuàng)建外部腳本的SCRIPT元素

這種方式是我認為跨域并行加載外部腳本情況下的***方案,實現(xiàn)方法是使用Javascript來動態(tài)的創(chuàng)建在HTML中引用外部腳本所需要srcript元素并給創(chuàng)建的srcript元素的src屬性設置相應的外部腳本的URL來實現(xiàn)和其他資源并行加載。

三 使用iframe加載外部腳本

這種方式我們需要使用一個新HTML頁面把外部腳本轉(zhuǎn)換成到該HTML頁面的行內(nèi)腳本,然后在主頁面中使用iframe加載這個包含腳本的HTML頁面,使用這種方式需要重構部分代碼來訪問主頁面中DOM元素。而且IFRAM是開銷相對較大DOM元素,同樣也有跨域限制。

四 使用Script標簽的 derfer 屬性

這種方式是實現(xiàn)非阻塞并行加載外部腳本的最簡單的方式,只需要在引用外部腳本的是常規(guī)方式上給SCRIPT標簽應用defer屬性即可。但是使用這種方式加載外部腳本缺點是它只在部門瀏覽器中實現(xiàn)并行加載因此兼容性欠缺。

五 docuument.write script tag

這種方式實現(xiàn)起來也比較簡單,就是直接使用是javascript的document.write方法來輸出在HTML中引用外部腳本的script標記的字符串。不足之處和方法五一樣兼容性欠缺。

總結

上述幾種方式需要根據(jù)具體需求,如是否需要跨域?是否需要確保腳本按順序執(zhí)行?是否需要觸發(fā)更多或更少的瀏覽器的忙指示器?以及兼容性,支持的代碼量來確定來綜合考慮那種方式才是追合適的。


分享題目:讓瀏覽器非阻塞加載javascript的幾種方式
文章起源:http://www.5511xx.com/article/dhihghd.html