gpt4 book ai didi

javascript - 如何删除页面中的所有脚本,甚至是那些附加到事件和计时器的脚本?

转载 作者:行者123 更新时间:2023-11-29 20:17:22 25 4
gpt4 key购买 nike

我正在试验 JavaScript,我似乎无法理解简单的行为。我想要做的是绝对禁用以下代码片段之前的所有 JS:

void (function(){
(function prepare(name){
var elements = document.getElementsByTagName(name);
for(var i = elements.length; i--;)
elements[i].parentNode.removeChild(elements[i]);
return prepare;
}('script'));
}());

注意 Marcel Korpel:插入缩进是为了便于阅读,但您应该将其作为一行代码粘贴到地址栏中。

下面的代码理论上应该禁用页面上的所有 JS,对吧?要测试它,您可以在页面完全加载时通过 javascript: [..] 执行它。 FireBug HTML 将显示所有脚本都已删除。但是,代码中有一些东西,例如 setTimeoutsetInterval、绑定(bind)特定操作、点击事件等,即使在代码执行后它们仍然有效。

有没有办法在脚本执行后完全删除所有这些?

最佳答案

不幸的是,超时(如 setTimeout)和间隔(setInterval)是不透明的。这意味着在不知道其句柄的情况下无法取消运行超时/间隔。对于事件监听器也是如此,DOM 对象的事件接收器不可用,因此在不知道如何调用 addEventListener 的情况下无法 removeEventListener

我能弄清楚的唯一方法是 Opera 中的用户 javascript,您可以在其中 Hook 上面列出的函数并跟踪超时/间隔/监听器。

关于javascript - 如何删除页面中的所有脚本,甚至是那些附加到事件和计时器的脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6048083/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com