Проблема загрузки удаленного скрипта с jQuery несколько раз в Firefox - PullRequest
1 голос
/ 30 ноября 2009

У меня есть элемент script на моей веб-странице, что-то вроде этого:

<script id="myscript"></script>

Теперь из файла javascript я делаю что-то вроде следующего:

$('#myscript').src('http://foo.bar?callback=somefunc')

Теперь этот удаленный скрипт «возвращает javascript» следующей формы:

somefunc(somearg);

Когда я запускаю все это, все работает аккуратно, скрипт загружается динамически, и выполняется обратный вызов somefunc.

Проблема возникает, когда я снова делаю то же самое. Допустим, я снова называю то же самое:

$('#myscript').src('http://foo.bar?callback=somefunc')

Это, по некоторым причинам, НЕ возвращает вызов javascript только в Firefox. (Работает нормально в IE - somefunc выполняется снова, как и ожидалось).

Я могу подумать об уродливых обходных путях (например, каждый раз делать $('head').append('<script...')) - но я бы хотел знать, что здесь происходит.

Заранее спасибо!

Ответы [ 2 ]

3 голосов
/ 30 ноября 2009

Я бы порекомендовал вам использовать $.getScript вместо того, чтобы использовать один тег загрузки скриптов несколько раз:

$.getScript("http://foo.bar?callback=somefunc");

Эта функция абстрагирует создание элемента script и его введение в DOM.

Но, похоже, вы обращаетесь к сервису JSONP, в этом случае вам нужно только $.getJSON:

$.getJSON("http://foo.bar?callback=?", function(json){
  // callback
});
2 голосов
/ 30 ноября 2009

Я могу подумать об уродливых обходных решениях (таких как использование $ ('head'). Append ('

Безобразие субъективно; лично я нахожу технику, которую вы пытаетесь использовать (сделать так, чтобы один тег скрипта загружал несколько скриптов) гораздо более страшной.

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

FWIW: Firefox, вероятно, не отвечает, потому что вы на самом деле ничего не меняете ... Если вы хотите сделать это еще более уродливым, добавьте некоторый параметр строки запроса без изменений, который изменяется каждый раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...