Greasemonkey脚本删除特定注释之间的HTML

Greasemonkey script to remove HTML between specific comments?

本文关键字:之间 HTML 注释 脚本 删除 Greasemonkey      更新时间:2023-09-26

为了阻止一些我加载页面时不想执行的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的新手是轻描淡写的,但我学得很快。

您不能仅通过删除包含它的<script>来删除JavaScript脚本。

这是因为一旦浏览器解析了<script>,脚本就会运行,并且无法撤消。

但在某些浏览器上,您可以在脚本运行之前使用beforescriptexecute事件阻止它:

window.addEventListener('beforescriptexecute', function(e) {
    if (~e.target.src.indexOf('example.com')) {
        e.preventDefault();
    }
}, true);

请注意,您的GM脚本必须在您想要阻止的脚本之前运行,以确保使用

@run-at document-start