jQuery 1.4 ajax callback, html () извлекает внешний JS из ответа - PullRequest
2 голосов
/ 21 января 2010

Использование jQuery 1.4 Я столкнулся с проблемой с внешним JS в ответе ajax, удаляемом при доступе к нему с помощью html().

Я создаю бесконечный эффект прокрутки для темы Tumblr, используя ajax-запрос для загрузки следующей страницы. Tumblr выводит JS в сообщениях аудио и слайд-шоу, чтобы отобразить элементы <embed> (проигрыватели Flash) для отображения содержимого. Разметка не может быть изменена.

Все отлично работает с использованием jQuery 1.3.2, внешний JS выполняется и отображает проигрыватели, однако в 1.4 удален javascript, и у меня остался запасной текст. JS включен в ответ, но при использовании html() в обратном вызове ajax я не могу получить или заставить выполнить javascript.

Я хочу использовать jQuery 1.4, потому что я использую некоторые его новые функции в других частях, я могу заставить его работать, используя split, но я не уверен, насколько надежно разделить ответ на определенный строка.

Я подготовил базовый образец (включает 2 файла, test.html & request.html ), демонстрирующий проблему. Откройте test.html для загрузки локального запроса из request.html

Является ли это поведение преднамеренным, могу ли я обойти это, или я просто делаю это неправильно?

Ответы [ 2 ]

0 голосов
/ 21 января 2010

Из документов jQuery на .ajax () :

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

Я не нахожу способа обойти это ... Но, похоже, он ведет себя не так, как 1.3.2, и плагин "1.3-compat", похоже, тоже не исправляет это.

0 голосов
/ 21 января 2010

Для меня это похоже на ошибку в 1.4 - я получаю те же результаты, используя ваш пример кода; переключение обратно на 1.3.2 позволяет снова выполнять встроенные сценарии.

В документации, безусловно, ничего не говорится о каких-либо изменениях в 1.4, которые препятствуют выполнению сценариев в извлеченном HTML. Я бы опубликовал вопрос на форуме jQuery и посмотрел, есть ли у кого-то еще проблема; Вы могли бы также привлечь внимание одного из разработчиков jQuery.

...