Запуск Javascript из внешнего файла, загруженного с помощью AJAX - PullRequest
1 голос
/ 09 декабря 2010

Я пытался разобраться в этом весь день, но действительно не могу понять это. У меня есть страница с
<div id="ajax"></div>, которая заполняется из меню на основе вкладок, в котором содержится фрагмент HTML-кода, хранящегося во внешнем файле, который содержит некоторый JavaScript (в основном, проверку формы).

Я видел в местах, где мне нужно eval () код, но с той же стороны, что люди говорят, что это последнее, что нужно сделать.

Может ли кто-нибудь указать мне правильное направление и, если возможно, привести пример, поскольку я очень плохо знаком с jQuery / JavaScript.

Большое спасибо:)

Ответы [ 3 ]

1 голос
/ 09 декабря 2010

Если вы извлекаете html через Ajax, и этот html содержит тег <script>, и вы записываете этот html в ваш документ через что-то вроде $('#foo').append(html), то JS должен запускаться немедленно без каких-либо хлопот.

1 голос
/ 09 декабря 2010

извлечение фрагмента HTML-кода, хранящегося во внешнем файле, содержащем некоторый JavaScript (в основном, проверку формы).

Избегайте этого. Запись <script> в innerHTML не приводит к выполнению сценария ... хотя перемещение элемента после этого может вызвать его выполнение в разное время в разных браузерах.

Так что на практике это противоречиво, и в любом случае нет смысла включать скрипт:

  • когда вы загружаете один и тот же фрагмент дважды, вы запускаете один и тот же сценарий дважды, что может переопределить некоторые функции или переменные, связанные с страницей, что может сделать вас крайне странным и трудным для восприятия. отладочные ситуации

  • не асинхронные / отложенные сценарии ожидают запуска во время анализа и могут включать методы, которые не могут работать при вставке в существующий документ (в случае document.write это обычно разрушает всю страницу, распространенный симптом при попытке загрузить скрипты сторонней рекламы / отслеживания).

Да, jQuery пытается сделать это более согласованным между браузерами, извлекая элементы скрипта и выполняя их. Но нет, он не может исправить все случаи (и в принципе не может). Так что не проси об этом. Сохраняйте ваши сценарии статичными и запускайте любой обязательный код сценария, который должен произойти в обратном вызове загрузки.

0 голосов
/ 09 декабря 2010

jquery автоматически обрабатывает сценарии, полученные в ajax-запросе при добавлении контента на страницу Если у вас возникла конкретная проблема, отправьте код.

См. эту ссылку

dataType: "html" - возвращает HTML как простой текст; включенные теги сценария являются оценивается при вставке в DOM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...