Как отключить элементы <script> с помощью JavaScript

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

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

Ответ 1

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

Ответ 2

Фактически, можно отключить выполнение, изменив атрибут 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/

Ответ 3

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

Ответ 4

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

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

Ответ 5

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

for (key in getEventListeners(document)) {
  getEventListeners(document)[key].forEach(function(c) {
    c.remove()
  })   
}

Ответ 6

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

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

//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, не будет выполнено. Однако все ваши функции() внутри тега 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);