最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

javascript中延遲加載的7種方法實(shí)現(xiàn)

 更新時(shí)間:2025年01月13日 11:10:55   作者:baoeni  
在web前端開發(fā)中,性能優(yōu)化一直是一個(gè)非常重要的話題,JavaScript中延遲加載的方式有很多種,本文就來介紹了javascript中延遲加載的7種方法實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下

延遲加載javascript,也就是頁面加載完成之后再加載javascript,也叫on demand(按需)加載,一般有一下幾個(gè)方法:

1. DOM

head append script tag

window.onload = function() {
    setTimeout(function(){

        // reference to <head>
        var head = document.getElementsByTagName('head')[0];

        // a new CSS
        var css = document.createElement('link');
        css.type = "text/css";
        css.rel = "stylesheet";
        css.href = "new.css";

        // a new JS
        var js = document.createElement("script");
        js.type = "text/javascript";
        js.src = "new.js";

        // preload JS and CSS
        head.appendChild(css);
        head.appendChild(js);

        // preload image
        new Image().src = "new.png";

    }, 1000);
};

2. document.write

<script language="javascript" type="text/javascript">
        function include(script_filename) {
            document.write('<' + 'script');
            document.write(' language="javascript"');
            document.write(' type="text/javascript"');
            document.write(' src="' + script_filename + '">');
            document.write('</' + 'script' + '>');
        }

        var which_script = '1.js';
        include(which_script);
        </script>

3. Iframe

和第一種類似,但是script tag是放到iframe的document里面。

window.onload = function() {
    setTimeout(function(){

        // create new iframe
        var iframe = document.createElement('iframe');
        iframe.setAttribute("width", "0");
        iframe.setAttribute("height", "0");
        iframe.setAttribute("frameborder", "0");
        iframe.setAttribute("name", "preload");
        iframe.id = "preload";
        iframe.src = "about:blank";
        document.body.appendChild(iframe);

        // gymnastics to get reference to the iframe document
        iframe = document.all ? document.all.preload.contentWindow : window.frames.preload;
        var doc = iframe.document;
        doc.open(); doc.writeln("<html><body></body></html>"); doc.close(); 

        // create CSS
        var css = doc.createElement('link');
        css.type = "text/css";
        css.rel = "stylesheet";
        css.href = "new.css";

        // create JS
        var js = doc.createElement("script");
        js.type = "text/javascript";
        js.src = "new.js";

        // preload CSS and JS
        doc.body.appendChild(css);
        doc.body.appendChild(js);

        // preload IMG
        new Image().src = "new.png";

    }, 1000);
};

4. Iframe static page

直接把需要加載東西放到另一個(gè)頁面中

window.onload = function() {
    setTimeout(function(){

        // create a new frame and point to the URL of the static
        // page that has all components to preload
        var iframe = document.createElement('iframe');
        iframe.setAttribute("width", "0");
        iframe.setAttribute("height", "0");
        iframe.setAttribute("frameborder", "0");
        iframe.src = "preloader.html";
        document.body.appendChild(iframe);

    }, 1000);
};

5. Ajax eval

用ajax下載代碼,然后用eval執(zhí)行

6. Ajax Injection

用ajax下載代碼,建立一個(gè)空的script tag,設(shè)置text屬性為下載的代碼

7. async 屬性(缺點(diǎn)是不能控制加載的順序)

<script src="" async="true"/>

到此這篇關(guān)于javascript中延遲加載的7種方法實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)javascript 延遲加載內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • js用正則表達(dá)式篩選年月日的實(shí)例方法

    js用正則表達(dá)式篩選年月日的實(shí)例方法

    在本篇文章里小編給大家整理的是一篇關(guān)于js用正則表達(dá)式篩選年月日的實(shí)例方法,對(duì)此有興趣的朋友們可以學(xué)習(xí)下。
    2021-01-01
  • 老生常談?wù)谡謱?滾動(dòng)條的問題

    老生常談?wù)谡謱?滾動(dòng)條的問題

    小編遇到的問題是在彈出層后面的 遮罩層,因?yàn)橛袧L動(dòng)條,導(dǎo)致滾動(dòng)條下面不可視區(qū)域沒有遮罩層。下面就為大家介紹一下解決方法
    2016-04-04
  • js實(shí)現(xiàn)QQ面板拖拽效果(慕課網(wǎng)DOM事件探秘)(全)

    js實(shí)現(xiàn)QQ面板拖拽效果(慕課網(wǎng)DOM事件探秘)(全)

    這篇文章主要為大家詳細(xì)介紹了QQ面板拖拽效果,探秘慕課網(wǎng)DOM事件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • 基于Electron實(shí)現(xiàn)桌面應(yīng)用開發(fā)代碼實(shí)例

    基于Electron實(shí)現(xiàn)桌面應(yīng)用開發(fā)代碼實(shí)例

    這篇文章主要介紹了基于Electron實(shí)現(xiàn)桌面應(yīng)用開發(fā)代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • JavaScript中new操作符使用詳解

    JavaScript中new操作符使用詳解

    new操作符是JavaScript中創(chuàng)建對(duì)象實(shí)例的重要方式,理解new操作符的工作原理對(duì)于掌握J(rèn)avaScript的面向?qū)ο缶幊讨陵P(guān)重要,本文將詳細(xì)介紹new操作符的原理及實(shí)現(xiàn),感興趣的小伙伴跟著小編一起來看看吧
    2024-11-11
  • JavaScript實(shí)現(xiàn)PC端橫向輪播圖

    JavaScript實(shí)現(xiàn)PC端橫向輪播圖

    這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)PC端橫向輪播圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • JavaScript實(shí)現(xiàn)樓層效果

    JavaScript實(shí)現(xiàn)樓層效果

    這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)樓層效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • 在knockoutjs 上自己實(shí)現(xiàn)的flux(實(shí)例講解)

    在knockoutjs 上自己實(shí)現(xiàn)的flux(實(shí)例講解)

    下面小編就為大家分享一篇在knockoutjs 上自己實(shí)現(xiàn)的flux方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • js打造數(shù)組轉(zhuǎn)json函數(shù)

    js打造數(shù)組轉(zhuǎn)json函數(shù)

    這里給大家分享的是一段使用js實(shí)現(xiàn)數(shù)組轉(zhuǎn)換成json的函數(shù)代碼,代碼簡潔易懂,并附上了使用方法,小伙伴們拿去試試。
    2015-01-01
  • JS重載實(shí)現(xiàn)方法分析

    JS重載實(shí)現(xiàn)方法分析

    這篇文章主要介紹了JS重載實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了javascript重載的實(shí)現(xiàn)與使用方法,需要的朋友可以參考下
    2016-12-12

最新評(píng)論

门头沟区| 平武县| 丹棱县| 富阳市| 阿城市| 东乌| 疏勒县| 营口市| 玉田县| 高州市| 商丘市| 菏泽市| 伊金霍洛旗| 林甸县| 庆安县| 仙游县| 德安县| 客服| 都兰县| 台安县| 榆树市| 塔河县| 黔东| 高安市| 贵德县| 胶州市| 乌海市| 迭部县| 翼城县| 西吉县| 镶黄旗| 故城县| 巧家县| 武陟县| 六安市| 黎城县| 曲周县| 无锡市| 志丹县| 南昌市| 平武县|