Создание функции для head.js дает довольно дикие ошибки в разных браузерах

Я создаю функцию для head.js ( http://headjs.com/), которая будет загружать в нее скрипты почти так же, как это делает библиотека jQuewy ( http://jquewy.com/). Тем не менее, я получаю довольно сумасшедшие ошибки в разных браузерах. Желаемый результат - получить предупреждение с загруженной версией jQuery:

 (function() {
  head.js(
   jquewy_get("","jquery","ui")
  );

  head.ready(function(){
   alert($.fn.jquery);
  });

  //Takes arguments and sets them so that it 
  //loads the urls in headjs
  function jquewy_get(){
   var ret = new Array();
   var arg = arguments[0];

   var rand = Math.floor(Math.random()*999*999);
   for (var i = 1; i < arguments.length; i++){
    var arg = arguments[i];
    ret[i] = 'hxxp://jquewy.com/dev/headjs/?name='+arg+'&rand='+rand;
   }
   return ret;
  }

 })();

В Firefox я получаю:

$ не определено в строке 39

Но еще более странно, тег сценария загружается (<script type="text/javascript" src="http://jquewy.com/dev/headjs/?name=ui&rand=717786"></script>), но Firebug говорит, что имеет:

Не удалось загрузить источник для: hxxp://jquewy.com/dev/headjs/? Name=ui&rand=717786

Что, очевидно, решает нормально. В Chromium он даже не загружает теги скрипта, и я пока не удосужился взглянуть на другие браузеры, потому что если он не работает в этих двух, то, скорее всего, он не будет работать где-то еще.

Вы можете взглянуть на источник здесь: http://jquewy.com/dev/static/headjs/test/

Изменить: для тех, кто хочет знать суть этого, дело в том, что вам не нужно запоминать URL-адреса - я портирую другой сервис, который я создал, называется jQuewy, который позволяет быстро создавать прототипы путем загрузки библиотек на основе их название. Мой сервис автоматически загрузит последние источники и автоматически вставит их на страницу. head.js - это другой скрипт, который выполняет аналогичные действия (но гораздо более популярен), поэтому я хочу, чтобы мой сервис был совместим с ним, чтобы конечные пользователи могли выбирать, как они загружают свои скрипты.

Редактирование #2: Жесткое кодирование в моих ссылках, кажется, создает те же ошибки. Мой сервер использует перенаправления, чтобы указать на правильные сценарии. Это нормальное поведение, и есть ли обходной путь, который будет независимым от браузера?

1 ответ

Решение

Ошибка возникает из-за того, что псевдоним $ для jQuery не установлен. Скрипт загружается нормально. Вы можете проверить это, позвонив

alert(jQuery('#nav').html());

например. Оно работает. Таким образом, вам нужно установить псевдоним самостоятельно. Например:

window.$ = jQuery;
alert($('#nav').html());

без ошибок, как вы можете видеть.

Кстати, поскольку $ alias может быть установлена ​​для любой библиотеки, вы должны предоставить механизм разрешения конфликтов. Как это делается в jQuery.noConflict().

Другие вопросы по тегам