Как отключить <script>элементов с помощью JavaScript - PullRequest
11 голосов
/ 24 марта 2012

Я хочу отключить <script> теги. Вот мой код, но он не работает.

document.getElementsByTagName('script').disabled = true;

Ответы [ 6 ]

10 голосов
/ 21 октября 2014

Фактически, можно отключить выполнение, изменив атрибут type:

<script type="text/javascript">
    alert("I will alert you");
</script>

<script type="application/json">
    alert("And I will keep silent");
</script>

<script>
    alert("I will alert too");
</script>

http://jsfiddle.net/r6c0x0sc/

9 голосов
/ 24 марта 2012

Не может быть сделано ... Тег сценария оценивается, как только рендерер DOM отображает его, поэтому получение дескриптора для него после подопечных не принесет особых результатов.

1 голос
/ 24 марта 2012

Извините, но вы не можете отключить элемент <script>.

0 голосов
/ 13 декабря 2018

Вы можете отключить элемент скрипта.Есть несколько способов:

Вы можете указать другой тип сценария , как и другие.Вот тот, который работал для меня:

//loop through all script tags on page
$('script').each(function(){
    var scripthtml = $(this).html();
    $(this).replaceWith('<script type="text/gzip">' + scripthtml + '</script>');
});

Все официальные типы сценариев можно найти здесь: iana.org

Второй способ - это просто простой оператор if :

//loop through all script tags on page
$('script').each(function(){
    var scripthtml = $(this).html();
    $(this).replaceWith('<script>if (1==0){' + scripthtml + '}</script>');
});

Оператор if всегда будет ложным, поэтому что-либо внутри тега скрипта не будет выполнено.Однако все ваши функции () внутри тега script будут действительны.

Здесь эквивалент javascript для replaceWith:

//get script and html
var yourscripttag = document.getElementById('yourscripttagID');
var scripthtml = 'if (1==0){' + yourscripttag.innerHTML + '}';
//remove script
yourscripttag.remove();
//create new script element
var newscript=document.createElement('script');
newscript.type='text/javascript';
//insert html in new script tag
newscript.appendChild(document.createTextNode(scripthtml));
//insert new script tag into head
document.getElementsByTagName('head').item(0).appendChild(newscript);
0 голосов
/ 21 февраля 2017

Удаление всех событий на узлах DOM предотвратит выполнение большей части JavaScript (здесь для document):

for (key in getEventListeners(document)) {
  getEventListeners(document)[key].forEach(function(c) {
    c.remove()
  })   
}
0 голосов
/ 21 мая 2013

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

Вы можете сделать это также в Javascript, если у вас есть строка HTML, которую вы хотите добавить, прежде чем добавить ее в Dom.

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