jquery yepnope выдает ошибку при загрузке одного и того же файла дважды - PullRequest
3 голосов
/ 15 февраля 2012
                $("#register").click(function()
                {
                     yepnope({
                          load: ['js/join.js', 'css/join.css',  'css/join_form.css'],
                     });

                     $('#midcol').load('join.htm');             
                });

При нажатии на ссылку регистрации yepnope загружает те файлы, которые указаны в списке, как и ожидалось. При нажатии на ссылку регистрации второй, третий, четвертый и т. Д ... время yepnope выбрасывает следующее Ошибка:
Не удалось преобразовать аргумент JavaScript arg 0 [nsIDOMHTMLHeadElement.insertBefore] JS / yepnope / yepnope.js Линия 248

У меня сложилось впечатление, что yepnope загрузит файл, только если он не существует? Требуется ли выполнять проверку каждого файла, который я хочу загрузить с помощью yepnope? Это будет немного пугающим, если это так.

Я не смог найти решение своей проблемы во время поиска в Интернете ЧАСОВ. Однако я наткнулся на CURL.js. У этого есть довольно меньшая занимаемая площадь. Я смог загрузить свои зависимости без каких-либо проблем. Ниже приведен пример кода для загрузки зависимостей.

var cnf = {
     baseUrl: 'scripts',
     pluginPath: 'curl/plugin',
     paths: {
          curl: 'curl/src/curl',
     },
};

curl(cnf, ['js!join.js!order', 'domReady!'], function () {
     $("#register").click(function(){
          $("#midcol").load("join.htm");    
     });
});

1 Ответ

1 голос
/ 19 марта 2012

По моему опыту, да, вы должны выполнить проверку, если есть вероятность загрузки скрипта дважды.Это кажется мне довольно редким случаем.

На сайте, над которым я работаю, я столкнулся с такой ситуацией, когда пользователь переключается между парой разделов, которые загружаются через AJAX, и каждый из них имеет свой собственный набор сценариев.Пользователь может сначала загрузить любой раздел.

Мои скрипты настроены как модули, так что это довольно легко сделать:

// Section A loaded
yepnope([{
    test: window.One,
    nope: 'js/One.js'
},{
    test: window.Two,
    nope: 'js/Two.js'
}]);

// Section B loaded
yepnope([{
    test: window.One,
    nope: 'js/One.js'
},{
    test: window.Three,
    nope: 'js/Three.js'
}]);

Вы определенно правы, когда загрузка обрабатывает это автоматическибыло бы гораздо удобнее.

...