Скрипт Greasemonkey для удаления HTML между конкретными комментариями?
Чтобы заблокировать некоторый JavaScript, который я не хочу выполнять при загрузке страницы, я хотел бы иметь скрипт Greasemonkey, который удаляет все между двумя тегами комментариев HTML. Например:
<!-- sub script -->
Lines containing script elements to be removed
<!-- end sub script -->
Ранее я пытался удалить элементы сценария, используя предложенный мне пример сценария, но он не работает должным образом. Этот сценарий был такой:
var script = document.querySelectorAll('script[src*="example.com"]');
for (var i = 0, len = script.length; i < len; i++) {
script[i].parentNode.removeChild(scriptscript[i]);
}
Проще говоря, он не удаляет элементы скрипта, как я надеялся. Я знаю, что элементы комментариев согласованы между страницами, и если бы я мог использовать их в качестве маркеров, чтобы начать и завершить поиск, и просто удалить все промежуточное, я думаю, это решило бы проблему.
Любое руководство будет оценено. Сказать, что я новичок в JavaScript, было бы преуменьшением, но я быстро учусь.
1 ответ
Вы не можете удалить скрипт JavaScript, просто удалив <script>
который включил это.
Это потому, что, как только браузер анализирует <script>
скрипт выполняется, и отменить это невозможно.
Но в некоторых браузерах вы можете заблокировать скрипт непосредственно перед его запуском, используя beforescriptexecute
событие:
window.addEventListener('beforescriptexecute', function(e) {
if (~e.target.src.indexOf('example.com')) {
e.preventDefault();
}
}, true);
Обратите внимание, что ваш скрипт GM должен быть запущен до того, как скрипт, который вы хотите заблокировать, обязательно используйте
@run-at document-start