• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
    當前位置: 首頁 - 科技 - 知識百科 - 正文

    javascript開發隨筆二動態加載js和文件_javascript技巧

    來源:懂視網 責編:小采 時間:2020-11-27 21:01:30
    文檔

    javascript開發隨筆二動態加載js和文件_javascript技巧

    javascript開發隨筆二動態加載js和文件_javascript技巧:這時候最好的做法就是按需引入,動態引入組件js和樣式,文件load完成后調用callback,運行js。代碼還是很簡便的 1. 判斷文件load完成。加載狀態ie為onreadystatechange,其他為onload、onerror 代碼如下: if(isie){ Res.onreadyst
    推薦度:
    導讀javascript開發隨筆二動態加載js和文件_javascript技巧:這時候最好的做法就是按需引入,動態引入組件js和樣式,文件load完成后調用callback,運行js。代碼還是很簡便的 1. 判斷文件load完成。加載狀態ie為onreadystatechange,其他為onload、onerror 代碼如下: if(isie){ Res.onreadyst

    這時候最好的做法就是按需引入,動態引入組件js和樣式,文件load完成后調用callback,運行js。代碼還是很簡便的
    1. 判斷文件load完成。加載狀態ie為onreadystatechange,其他為onload、onerror
    代碼如下:
    if(isie){
    Res.onreadystatechange = function(){
    if(Res.readyState == 'complete' || Res.readyState == 'loaded'){
    Res.onreadystatechange = null;
    callback();
    _self.loadedUi[modelName] = true;
    }
    }
    }else{
    Res.onload = function(){
    Res.onload = null;
    callback();
    _self.loadedUi[modelName] = true;
    }
    Res.onerror = function(){
    throw new Error('res error:' + modelName+'.js');
    }
    }

    2. 所有組件的命名最好保持一致,callback調用也比較方便。還可以根據需要增加參數比如: requires,依賴于那些文件;style,true || false,是否加載樣式,等等。
    3. 移除操作也可以有,移除script、style標簽、delete組件
    代碼如下:
    (function(window,undefined){
    if(!window.ui) {
    window.ui = {};
    }
    //動態加載ui的js
    window.bus = {
    config : {
    version : window.config.version,
    cssPath : window.config.resServer + '/css/v3/ui',
    jsPath : window.config.resServer + '/js/v2/ui'
    },
    loadedUi : {},
    readyStateChange : function(){
    var ua = navigator.userAgent.toLowerCase();
    return ua.indexOf('msie') >= 0;
    },
    loadRes : function(modelName,prames,callback){
    var _self = this;
    var Res = document.createElement(prames.tagName);
    for(var k in prames){
    if(k != 'tagName'){
    Res.setAttribute(k,prames[k],0);
    }
    }
    document.getElementsByTagName('head')[0].appendChild(Res);
    if(this.readyStateChange()){
    Res.onreadystatechange = function(){
    if(Res.readyState == 'complete' || Res.readyState == 'loaded'){
    Res.onreadystatechange = null;
    callback();
    _self.loadedUi[modelName] = true;
    }
    }
    }else{
    Res.onload = function(){
    Res.onload = null;
    callback();
    _self.loadedUi[modelName] = true;
    }
    Res.onerror = function(){
    throw new Error('res error:' + modelName+'.js');
    }
    }
    },
    removeUi : function(modelName){
    if(!modelName){
    return true
    };
    this.loadedUi[modelName] = false;
    var head = document.getElementsByTagName('head')[0];
    var model_js = document.getElementById('J_model_'+modelName + '_js');
    var model_css = document.getElementById('J_model_'+modelName + '_css');
    if(model_js && model_css){
    delete window.ui[modelName];
    head.removeChild(model_js);
    head.removeChild(model_css);
    return true;
    }else{
    return false;
    }
    },
    loadUi : function(modelName,callback,setting){
    if(!modelName){
    return true
    };
    callback = callback || function(){};
    if(this.loadedUi[modelName] == true){
    callback();
    return true
    }
    var deafult_setting = {
    style : true,
    js : true,
    requires : []
    }
    for(var key in setting){
    deafult_setting[key] = setting[key];
    }
    deafult_setting['style'] === true && this.loadRes(modelName,{
    id : 'J_model_'+modelName + '_css',
    name : modelName,
    tagName : 'link',
    type : 'text/css',
    rel : 'stylesheet',
    href : this.config.cssPath + '/' + modelName + '.css?v=' + this.config.version
    });
    deafult_setting['js'] === true && this.loadRes(modelName,{
    id : 'J_model_'+modelName + '_js',
    name : modelName,
    tagName : 'script',
    type : 'text/javascript',
    src : this.config.jsPath + '/' + modelName + '.js?v=' + this.config.version
    },callback);
    if(deafult_setting.requires.length > 0){
    for(var i=0,len = deafult_setting.requires.length;ithis.loadUi(deafult_setting.requires[i]);
    }
    }
    }
    }
    })(window)

    使用方法
    代碼如下:
    // load comment for feed
    window.bus.loadUi('new_comment_feed', function(){
    window.ui.new_comment_feed($("#J_newsList"));
    },{
    style : false,
    requires:['emoticon','addFriend']
    });
    // load new yy ui
    window.bus.loadUi('yy', function(){
    window.ui.yy(options);
    },{
    style:false,
    requires:['emoticon']
    });
    // load photoLightbox
    window.bus.loadUi('photoLightbox', function(){
    window.ui.photoLightbox(options.urlAjaxGetFriendPhoto, options.urlCommentOtherPhoto,$("#J_newsList"),options.myUid,options.myName);
    });

    聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    javascript開發隨筆二動態加載js和文件_javascript技巧

    javascript開發隨筆二動態加載js和文件_javascript技巧:這時候最好的做法就是按需引入,動態引入組件js和樣式,文件load完成后調用callback,運行js。代碼還是很簡便的 1. 判斷文件load完成。加載狀態ie為onreadystatechange,其他為onload、onerror 代碼如下: if(isie){ Res.onreadyst
    推薦度:
    標簽: 文件 文檔 js
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 亚洲国产精品无码成人片久久| 精品人妻va出轨中文字幕| 日韩精品无码专区免费播放| 国产午夜精品一区二区| 国产欧美久久久精品| 亚洲精品无码成人AAA片| 久久国产精品免费| 久久精品国产69国产精品亚洲| 国产成人精品久久亚洲高清不卡 国产成人精品久久亚洲高清不卡 国产成人精品久久亚洲 | 精品国产精品国产偷麻豆| 在线精品国产一区二区三区 | 精品人妻中文av一区二区三区| 亚洲精品无码久久不卡| 精品亚洲欧美中文字幕在线看| 国产精品v欧美精品v日本精 | 久久精品国产半推半就| 国产成人精品久久免费动漫| 国产精品美女一区二区视频| 久久综合国产乱子伦精品免费 | jizz国产精品| 成人精品一区二区久久久| 亚洲精品视频在线| 亚洲国产精品久久久久婷婷老年| 精品一区二区久久久久久久网站| 国产精品99精品无码视亚| 国产精品视频第一区二区三区| 国内少妇偷人精品视频免费 | 精品国产高清在线拍| 国内精品久久久久久麻豆| 精品人妻少妇嫩草AV无码专区| 国产在线精品观看免费观看| 久久国产乱子伦精品免费午夜| 精品精品国产理论在线观看| 久久久99精品成人片中文字幕 | 国产精品美女久久久网AV| 国产精品无码素人福利不卡| 精品多毛少妇人妻AV免费久久| 欧美成人精品欧美一级乱黄码| 四虎亚洲国产成人久久精品| 一本久久a久久精品亚洲| 日韩精品乱码AV一区二区|