Удалите загруженный контент ajax и script
Я не знаю, что это может быть дубликат, но
Я использую ajax на своем веб-сайте, теперь в ответ на этот вызов я отправляю некоторые html и script.
Затем я заменяю эти данные некоторым из моего элемента на странице.
Теперь, я хочу сделать второй вызов ajax, поэтому я удалил html-контент из загруженного div. Затем снова вызов ajax возвращает другой код html и script. Но несколько раз это конфликт между предыдущим script и вновь прибывшим script.
EX.
1-й ответ Я заменяю html и script на некоторый элемент: $('.ma_right_main').html(response.data);
то перед вторым вызовом я удаляю содержимое:
$('.ma_right_main').html('');
2-й ответ Я заменяю html
и script на некоторый элемент: $('.ma_right_main').html(response.data);
но после замены его второй раз script возвращается с первого раза все еще там в исполнении. Я хочу удалить его так же, как я могу удалить содержимое html.
Ответы
Ответ 1
Я не думаю, что однажды браузер загрузил script, чтобы его можно было удалить (это не значит, что вы не можете удалить его из dom, но он все равно будет существовать.) Например, если вы a script с переменной x
, загрузите страницу, чтобы загрузился script, удалите script из dom, x
. Я думаю, что все еще будет определено.
Есть способы обойти это, хотя, если каждый динамически загруженный script был его собственным объектом, при "разгрузке" вы могли бы установить объект в null. Это решение, с которым я столкнулся некоторое время назад при поиске аналогичного решения.
Нашел ссылку, на которую я ссылался: fooobar.com/questions/531921/...
Ответ 2
Сценарии не выполняются естественным образом. (Настройка .innerHTML
не будет выполнять скрипты внутри HTML).
jQuery вручную находит все элементы script в html, удаляет их и оценивает. Поэтому, если вы используете .html
и не хотите, чтобы скрипты выполнялись, не включайте скрипты в html.
И вы не можете деактивировать скрипты, поэтому вам нужно реорганизовать ваш сайт с учетом этого. Не включайте новый код в ответы, если они могут конфликтовать с предыдущими. Используйте общий код, который всегда загружается.