Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.11.2014, 02:45
Интересующийся
Отправить личное сообщение для Kot137 Посмотреть профиль Найти все сообщения от Kot137
 
Регистрация: 23.11.2013
Сообщений: 10

Динамичская подгрузка скриптов - событие завершения загрузки?
Использую общедоступный подгрузчик скриптов/CSS:
Код:
dynjs={
    type: {js: "js", css: "css", csstxt: "csstxt"},
    load: function (url_, type_){  
        if (typeof(type_) == "undefined"){type_ = dynjs.type.js;}  
        var is_exist=false;  
        var tag = type_ == dynjs.type.js ? "script" :
            type_ == dynjs.type.css ? "link" : "style";  
        var objects=document.getElementsByTagName(tag);  
        var src = type_ == dynjs.type.js ? "src" : "href";  
        for(var i=0; i < objects.length; i++){  
            var elem=objects[i];    
            if(elem.getAttribute(src) == url_){is_exist=true;}
        }  
        if(is_exist){return;}  
        var _elem=document.createElement(tag);  
        var type = type_ == dynjs.type.js ?
            "text/javascript" : "text/css";
        _elem.setAttribute("type", type);  
        _elem.setAttribute(src, url_);  
        if (type_ == dynjs.type.css){
            _elem.setAttribute("rel", "Stylesheet");
        }
        if (type_ == dynjs.type.csstxt){
            if (typeof(_elem.styleSheet) != "undefined"){
                _elem.styleSheet.cssText = url_;
            } else if (typeof(_elem.innerText) != "undefined"){
                _elem.innerText = url_;
            } else {_elem.innerHTML = url_;}
        }
        document.getElementsByTagName("head")[0].appendChild(_elem);
    }
};
загрузка
Код:
dynjs.load("jquery.min.js", dynjs.type.js);
Задача - отловить событие полной загрузки скрипта. Ситуация такая: в результате неких действий на странице возникает задача выполникть код на JQuery, а перед этим подгрузить динамически jquery.min.js. Если код выполнять сразу - будет ошибка неопределенной $. Сейчас пользуюсь костылем: ставлю таймаут.
Ответить с цитированием
  #2 (permalink)  
Старый 23.11.2014, 03:13
Интересующийся
Отправить личное сообщение для Kot137 Посмотреть профиль Найти все сообщения от Kot137
 
Регистрация: 23.11.2013
Сообщений: 10

Всем спасибо!
вопрос решен при помощи onload
dynjs={
    onl: function(){},
    type: {js: "js", css: "css", csstxt: "csstxt"},
    load: function (url_, type_){  
        if (typeof(type_) == "undefined"){type_ = dynjs.type.js;}  
        var is_exist=false;  
        var tag = type_ == dynjs.type.js ? "script" :
            type_ == dynjs.type.css ? "link" : "style";  
        var objects=document.getElementsByTagName(tag);  
        var src = type_ == dynjs.type.js ? "src" : "href";  
        for(var i=0; i < objects.length; i++){  
            var elem=objects[i];    
            if(elem.getAttribute(src) == url_){is_exist=true;}
        }  
        if(is_exist){return;}  
        var _elem=document.createElement(tag);  
        var type = type_ == dynjs.type.js ?
            "text/javascript" : "text/css";
        _elem.setAttribute("type", type);  
        _elem.setAttribute(src, url_);  
        if (type_ == dynjs.type.css){
            _elem.setAttribute("rel", "Stylesheet");
        }
        if (type_ == dynjs.type.csstxt){
            if (typeof(_elem.styleSheet) != "undefined"){
                _elem.styleSheet.cssText = url_;
            } else if (typeof(_elem.innerText) != "undefined"){
                _elem.innerText = url_;
            } else {_elem.innerHTML = url_;}
        }
        _elem.onload=dynjs.onl;
        _elem.onerror = function() { 
            alert("Ошибка: " + this.src);  
        }
        document.getElementsByTagName("head")[0].appendChild(_elem);
    }
};

Вызов:
dynjs.onl=function(){
   alert("Скрипт загружен!"); 
}
dynjs.load("http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js", dynjs.type.js);
Ответить с цитированием
  #3 (permalink)  
Старый 24.11.2014, 01:26
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

http://jsfiddle.net/vlasenkofedor/5pDXf/ посмотри этот скрипт, здесь все решено

Последний раз редактировалось Vlasenko Fedor, 24.11.2014 в 01:29.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Событие загрузки отдельного элемента Dimaz Events/DOM/Window 11 29.08.2014 20:52
Протектор загрузки скриптов Roman S Библиотеки/Тулкиты/Фреймворки 3 01.02.2014 09:00
fancybox iframe подгрузка скриптов Pashok jQuery 2 29.01.2014 01:32
Событие загрузки кода страницы Oren2014 Opera, Safari и др. 2 05.12.2013 12:30
Событие загрузки элемента, но не load grecha Events/DOM/Window 2 08.05.2013 01:31