Javascript.RU

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

Подключение и удаление скриптов динамически.
Я подключил динамически файл со скриптами, но как удалить их? Нужно, чтобы функции и события данном скрипте перестали работать. Как это сделать?

Подключил скрипт с помощью функции
function $import(src) {
    var scriptElem = document.createElement('script');
    scriptElem.setAttribute('src', src);
    scriptElem.setAttribute('type', 'text/javascript');
    document.getElementsByTagName('head')[0].appendChild(scriptElem);
}
function $importNoCache(src) {
    var ms = new Date().getTime().toString();
    var seed = "?" + ms;
    $import(src + seed);
}


Вызываю функцию после callbackом после загрузки html страницы.
$('#content').load(page, function () {
         $importNoCache(getPath + 'js/common.js');
    });


Скрипт подключается. Как удалить все что там есть?
Ответить с цитированием
  #2 (permalink)  
Старый 29.06.2016, 17:38
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

все функции данного скрипта засунуть в одну функцию
когда надо обнулить переопределяем функцию
function myfunction(){}

свой велосипед
var loader = (function (src, callback) {
    var doc = window.document, cache = {};
    return function (src, callback) {
        if (cache.hasOwnProperty(src)) {
            callback && (callback());
        } else {
            var el = doc.createElement('script'), loaded = 0;
            el.src = src, doc.body.appendChild(el), cache[src] = 1;
            if (callback) {
                el.onload = el.onreadystatechange = function () {
                    if ((el.readyState && el.readyState !== 'complete' && el.readyState !== 'loaded') || loaded)
                        return false;
                    el.onload = el.onreadystatechange = null, loaded = 1, callback();
                };
            }
        }
    };
}());
// Использование
loader('test1.js', me);
function me() {
    alert('This callback Me');
}

и лучше используйте RequireJS
Ответить с цитированием
  #3 (permalink)  
Старый 08.07.2016, 18:54
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

А этот колбек, это опция, или жаба скрипты загружаются асинхронно? То есть, если выкинуть колбек и сразу после лоадера пытаться юзать загруженный скрипт, все будет норм или может быть все плохо?
Ответить с цитированием
  #4 (permalink)  
Старый 08.07.2016, 20:28
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

колбек - это опция
Сообщение от warren buffet
если выкинуть колбек
может случится ситуация когда скрипт не загрузился еще, а вы будете стучатся к его функционалу
с помощью колбека можно задать порядок загрузки скриптов
все js подключенные динамически загружаются асинхронно
Ответить с цитированием
  #5 (permalink)  
Старый 08.07.2016, 22:25
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

Ну "понел" )))
Ответить с цитированием
  #6 (permalink)  
Старый 14.07.2016, 11:43
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

Все-таки не "понел", зачем вот эта штука:

loaded = 0
...
|| loaded
...
loaded =1

Насчет асинхронно. Атрибут async не избавляет?
Ответить с цитированием
  #7 (permalink)  
Старый 14.07.2016, 12:10
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

Сообщение от warren buffet
Все-таки не "понел", зачем вот эта штука
потесть в разных броузерах без loaded
Сообщение от warren buffet
Насчет асинхронно. Атрибут async не избавляет?
Сообщение от Poznakomlus
все js подключенные динамически загружаются асинхронно
Счас стукну
зачем им атрибут если они уже и так как надо
и атрибут не кроссброузерный
Ответить с цитированием
  #8 (permalink)  
Старый 15.07.2016, 21:10
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

Понел, ты сам не знаешь зачем там loaded.

Кстати, прикол, внезапно я сообразил, что onload это же проперть window на которую в старину вешали функции. А у меня этих онлоадов дохера и больше, привычный паттерн называть колбеки загрузки онлоадами. И что ты думаешь? В межклеточном пространстве onload == null. А этот loaded - внутри клетки и нихера не делает.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подгрузка скриптов динамически => pending Shasoft Общие вопросы Javascript 1 13.03.2016 23:02
Динамическое подключение стилей и скриптов Marv Events/DOM/Window 5 17.10.2013 13:58
Подключение внешних скриптов к динамически создаваемому окну damekkoneko Events/DOM/Window 15 06.03.2013 11:35
перенос подключение скриптов в header Артем125 Javascript под браузер 8 13.10.2012 05:16
Подключение скриптов из внешнего файла feelman Общие вопросы Javascript 19 29.05.2010 21:21