<script> теги в ответе ajax не обрабатываются IE <= 8 - PullRequest
0 голосов
/ 26 октября 2011

У меня есть страница, которая использует jQuery метод $ .post (), чтобы получить html, а внутри html есть тег.

Мой код выглядит примерно так:

$.post( 'myUrl',
    { someData : 'someData', moreData : 'moreData'},
    function(response){
        $('body').append(response);
});

Есть ли причина, по которой тег скрипта не будет анализироваться в IE <= 8? Он отлично разбирается в любом другом браузере. Я искал в Интернете уже несколько часов и, похоже, ничего не могу найти по этому вопросу, поэтому я предполагаю, что я что-то забыл или упущу что-то не так? </p>

EDIT:

Только что нашел это на сайте jQuery (http://api.jquery.com/jQuery.ajax/) относительно html dataType для запросов ajax:

"Возвращает HTML в виде простого текста; включенные теги сценария оцениваются при вставке в DOM."

По связанному вопросу SO ( Не могу добавить элемент ): Ответ, данный @Hendra, утверждает, что это ДОЛЖНО работать. Что все еще заставляет меня удивляться, почему это не работает в IE7 / 8.

Ответы [ 2 ]

1 голос
/ 26 октября 2011

Использование методов DOM для вставки тега <script> приводит к выполнению тега. Простое использование innerHTML (или некоторый фреймворк, который его использует) НЕ приведет к выполнению скрипта. Это, вероятно, причина вашей проблемы. Я предлагаю разделить HTML и JS, а затем запустить eval в разделе JS.

0 голосов
/ 27 октября 2011

Я нашел проблему.

Мой сайт использует html5 и, таким образом, полагается на innershiv (http://jdbartlett.com/innershiv/) для вставки элементов в dom для браузеров, отличных от html5 (для меня это будет ie7 / 8)

Я забыл, что у нас есть автоматический скрипт, который вызывает innershiv для всех методов вставки jQuery (.html (), .append () и т. Д.)

Причина, по которой мне это не удалось, заключается в том, что innershiv обходил оценку сценариев jQuery.

Исправление заключалось в том, чтобы выполнить оценку сценария из сценария, который вызывает innershiv. JD Bartlett дает более подробное объяснение здесь: https://github.com/jdbartlett/innershiv/issues/4

...