onload時的異步加載


在說異步加載的時候,先把應用背景說一下!

 

我們平時使用最多的是同步加載,同步模式又稱為阻塞模式!顧名思義,他會阻止瀏覽器的后續處理,停止后續一系列的解析,包括后續文件的加載,渲染,代碼執行等等!

那既然同步模式有那么多弊端,為啥我們還要用它呢!其實是為了安全性考慮的,js之所以要同步執行,很多時候是考慮到輸出document內容,修改dom,重定向等行為,所以默認同步執行才是最安全的!

 

那么我們也知道,有時候我們就是有這樣的需求,希望頁面先進行展示,其中的某些部分可以慢慢加載!這樣用戶體驗會更加好,否則頁面一直顯示不出來,等加載也不是個事!

那么知道了同步加載的概念,其實異步加載就很簡單了,反過來就是了!異步加載也叫非阻塞加載咯,不需要等加載完,后續的頁面就可以進行處理了!

 

今天我主要是說一下一種異步加載的方式,就是onload時候的異步加載

(function() {
     function load(){
         var s = document.createElement('script');
         s.type = 'text/javascript';
         s.async = true;
         s.src = 'http://example.com/script.js';
         var x = document.getElementsByTagName('script')[0];
         x.parentNode.insertBefore(s, x);
     }
     if (window.attachEvent)
         window.attachEvent('onload', async_load);
     else
         window.addEventListener('load', async_load, false);
 })();

其中async屬性是HTML5中新增的異步支持,這邊是用到了匿名函數的用法!

window.attachEvent是用來給一個事件指派多個處理過程的!

window.addEventListener跟上面一樣,只不過Mozilla/Firefox 不支持 attachEvent,只支持addEventListener!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM