gpt4 book ai didi

javascript - 是否可以在页面加载后的给定时刻禁用特定页面上的所有 javascript 执行?

转载 作者:行者123 更新时间:2023-12-05 06:40:47 27 4
gpt4 key购买 nike

我有时会碰到一个页面,它提供了有趣的内容,还带有大量烦人的废话,比如添加、弹出窗口、重定向,今天你不能只安装 noscript 或 addblock,因为它们停止工作或者它们可以被检测到和网站将阻止您看到内容。

当你在页面加载之前阻止脚本域和其他资源时,你会得到损坏的页面或空白页面 - 所以这种方法实际上没有解决任何问题,当你在加载后禁用它时(使用 noscript 或 quickjs)它根本不会停止任何东西(什么已经加载)。

假设您在页面上有侵入性广告,其中每个链接都通过 javascript 处理,并且从未使用过 anchor 标记上的真实链接,每次单击时都会执行一些绑定(bind)到链接的单击处理程序并打开例如来自 base64 图像的弹出窗口或其他内容就像那样,即使是adblock也是无能为力的。肯定不能覆盖所有场景。

是否有适用于 firefox 和 chrome 的附加组件,可以按需删除所有附加的处理程序,卸载所有脚本,内联脚本而不干扰显示的内容,并在我决定时立即保持页面不变当前打开的选项卡?没有一行 js 代码,ajax 调用,在那一刻之后什么都不能执行和修改?所以要完成这个场景,我接下来要做什么将仅由纯 html 和 css 控制(在当前选项卡的范围内)?

最佳答案

我找到了以下 here .它的工作原理是请求您所在页面的源,然后从中剥离脚本标签,然后使用该源减去脚本重新加载整个 DOM。对我来说,它绕过了 <noscript>类型的滋扰。我加载了一个扩展程序并为特别烦人的页面启用了它。

您可以对其进行修改,使其仅阻止某些脚本。我在 Chrome 中将其作为本地打包的扩展程序运行。

var xhr = new XMLHttpRequest,
content,
doc,
scripts;

xhr.open( "GET", document.URL, false );
xhr.send(null);
content = xhr.responseText;

doc = document.implementation.createHTMLDocument(""+(document.title || ""));

doc.open();
doc.write(content);
doc.close();


scripts = doc.getElementsByTagName("script");
//Modify scripts as you please
[].forEach.call( scripts, function( script ) {
script.removeAttribute("src");
script.innerHTML = 'alert("hello world");';
});

//Doing this will activate all the modified scripts and the "old page" will be gone as the document is replaced
document.replaceChild( document.importNode(doc.documentElement, true), document.documentElement);

关于javascript - 是否可以在页面加载后的给定时刻禁用特定页面上的所有 javascript 执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41910753/

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