Тег SCRIPT удален из ответа AJAX в Internet Explorer - PullRequest
2 голосов
/ 08 декабря 2011

В нашем текущем проекте некоторый код возвращается с AJAX, и мы используем innerHTML, чтобы поместить этот код в DIV.

Теперь мы ищем в этом DIV все доступные теги сценариев и EVAL () содержимое этих тегов сценариев (добавляет некоторую информацию в глобальный массив и т. Д.)

scriptTags = responseElement.getElementsByTagName("script");

for (i = 0; i < scriptTags.length; i++) {
            eval(scriptTags[i].text);
        }

Это прекрасно работает в Firefox и Chrome. Но в IE скриптTag выглядит пустым. При дальнейшем исследовании кажется, что innerHTML элемента responseElement не содержит каких-либо тегов SCRIPT (хотя в Firefox / Chrome они есть!)

Кто-нибудь знает причину и / или обходной путь?

Кстати, вот как я разместил ответ AJAX на странице:

this.proxy.innerHTML = o.responseText;
scriptTags = this.proxy.getElementsByTagName("script");

Отладка o.responseText показывает теги SCRIPT внутри ответа. Переход к элементу this.proxy на странице показывает тег no SCRIPT в IE, но отображается в Firefox / Chrome.

1 Ответ

1 голос
/ 08 декабря 2011

Проблема была исправлена ​​добавлением дополнительного элемента узла перед тегами SCRIPT, которые были в ответе AJAX.(решение / причина: http://allofetechnical.wordpress.com/2010/05/21/ies-innerhtml-method-with-script-and-style-tags/)

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

...