IE периодически не выполняет динамично добавленный файл сценария

У нас есть некоторый JavaScript, который пишет, что сценарий включает в динамический ресурс в нашей веб-странице, чтобы позволить нам передавать некоторую информацию между страницами, подаваемыми с различных серверов, которые подвергаются перекрестным ограничениям сценариев сайта.

Идея состоит в том, что браузер запрашивает файл JavaScript, который подается динамическим ресурсом на стороне сервера (который также помещает некоторую информацию о стороне сервера в Запрос). Файл JavaScript тогда выполняется браузером, когда он добавляется к странице.

Мы столкнулись с проблемой с Internet Explorer, где JavaScript, возвращенный в ответе, периодически не выполняется, когда это добавляется к странице. При осмотре Скрипача трассировка HTTP, когда проблема происходит, показывает, что сценарий успешно возвращается к браузеру.

Для тестирования этого более надежно я изменил код, который добавляет сценарий для выполнения 1000 раз в цикле как указано ниже:

for (var i = 1; i <= 1000; i++) {
    try {
        var script = document.createElement("SCRIPT");
        script.src = serverHome + "/ajavascriptfile.js?token=" + token + "&num=" + i;
        script.id = token;
        document.getElementsByTagName("HEAD")[0].appendChild( script );
    } catch (e) {
        alert(e);
    }
}

Сценарий, возвращенный ajavascriptfile.js просто увеличивает счетчик на моей странице:

var output = document.getElementById("output");
output.innerHTML = parseInt(output.innerHTML) + 1;

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

Если это выполняется правильно, счетчик должен добраться до 1 000 (который он делает в Firefox). Однако в IE6 это составляет в среднем 900-950, IE7 - приблизительно 995-998, и IE8 является испытанием на удар 750-800.

Кто-либо еще встретился с Internet Explorer, не выполняющим динамично включенные сценарии? Если так, Вы знаете как к обходному решению эта проблема?

9
задан james.bunt 10 February 2010 в 17:21
поделиться

2 ответа

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

IE8 допускает 6 одновременных сценариев, я думаю, что IE7 разрешил 4, а 6 разрешил 2.

Я видел это также в Opera, Chrome и Safari (но пока не в firefox), поэтому, если я загружаю более одного script, я удерживаю выполнение любых команд до тех пор, пока не узнаю, что ресурсы доступны - обычно путем тестирования типа функции из требуемого файла и обратного вызова таймера, если он не найден.

1
ответ дан 3 November 2019 в 09:30
поделиться

Возможно, Internet Explorer кэширует файл скрипта. Попробуйте добавить немного дополнительной энтропии в src include:

script.src = serverHome + "/ajavascriptfile.js?token=" + token + "&num=" + i + '&r=' + Math.random();
0
ответ дан 3 November 2019 в 09:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: