Как заставить JS выполняться в ответе HTML, полученном с помощью Ajax? - PullRequest
0 голосов
/ 01 июня 2010

У меня следующий рабочий процесс

  1. используется div на странице
  2. по запросу пользователя выполнено на страницу сервера, чей HTML восстановлен с помощью ajax и сброшен в Div
  3. С HTML-разметкой JavaScript также сбрасывается, однако это не исполняется.

Почему так? Что может быть возможным исправить?

Хотя я избегаю подобных вещей, но в некоторых старых реализациях кода подобные очень распространены.

1 Ответ

2 голосов
/ 01 июня 2010

Сценарии, добавленные с использованием .innerHTML, не будут выполняться, поэтому вам придется справиться с этим самостоятельно.

Один простой способ - извлечь сценарии и выполнить их

 var response = "html\<script type=\"text/javascript\">alert(\"foo\");<\/script>html";
 var reScript = /\<script.*?>(.*)<\/script>/mg;
 response = response.replace(reScript, function(m,m1) {
     eval(m1); //will run alert("foo");
     return "";
 });
alert(response); // will alert "htmlhtml"

Это позволит извлечь сценарии, выполнить их и заменить на «» в исходных данных.

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