Добавление динамического тега jQuery приводит к тому, что IE9 дважды запрашивает src - PullRequest
4 голосов
/ 07 июля 2011

Только что натолкнулся на что-то действительно странное с IE9 (как необычно?)

У меня есть следующий код для преодоления междоменных ограничений и загрузки javascript, который работает на localhost

 var url = 'http://local.maglnk.com:45099/download/?info_hash='+info_hash;
 var scriptTag = $('<script />').attr('src',url);
 scriptTag.appendTo('body');

Thisкод прекрасно работает в любом браузере, кроме IE9, странная вещь в том, что IE9 дважды запрашивает URL-адрес тега script, а во второй раз, когда он делает это, добавляет некоторую временную метку в конце URL

 http://local.maglnk.com:45099/download/?info_hash=6eabb12b8bf344feba7d323c940c18d096771b99&_=1309998922080)

Я не уверен, добавлен ли конечный "& _ = 1309998922080" jQuery, когда он динамически добавляет тег сценария, или если IE выполняет какой-либо предварительный просмотр или предварительный анализ, в этом случае яспросите здесь, есть ли способ остановить этот механизм с помощью javascript.

Если вы когда-либо сталкивались с чем-то подобным, напишите об этом.

Ответы [ 3 ]

3 голосов
/ 07 июля 2011

Если вы все равно используете jQuery, почему бы не использовать jQuery.getScript ?

1 голос
/ 07 июля 2011

Нашли решение.

Не используйте метод jQuery appendTo ().Вместо этого используйте $ .getScript (url), и проблема исчезнет.

Итак, похоже, что это проблема jQuery с IE9, когда вы динамически добавляете теги сценариев.

0 голосов
/ 01 апреля 2014

В некоторых случаях $.getScript() может не подходить, потому что это может испортить порядок загруженных файлов JavaScript.Это потому что это асинхронно.Если динамически загружаемые файлы JavaScript являются зависимостями друг от друга, это может вызвать проблемы.

В этом случае вы захотите сделать это:

$( document.body ).append( $( '<script src="hello.js"></script>' ) );

...