我有一个网站,我想使用脚本标记中的 document.location 来阻止页面重新加载。如何在 Firefox 中做到这一点?
答案1
实际上,如果 HTML 代码包含带有重定向的内联 javascript 块,则 Greasemonkey 将不会阻塞,如下所示:
<script type="text/javascript">
var url = "http://google.com";
document.location.replace(url);
</script>
但是,Greasemonkey 可用于阻止对特定函数的调用 - 只需覆盖它们即可:)。如果将上述内容包装成函数调用,如下所示:
<script type="text/javascript">
function redirect_to(url)
{
document.location.replace(url);
}
</script>
然后您可以在 Greasemonkey 中重新定义该函数:
function redirect_to(url){ return true }
通过 Firefox 阻止内联重定向
本质上,Firefox 可以location.href.replace
通过所谓的以下方式阻止任何来自特定站点的 DOM 操作:可配置安全策略 (CAPS)
警告:请注意,您的安全设置将阻止来自该域的所有调用location.href.replace
。如果任何应用程序使用该调用,则无法允许某些调用并阻止其他调用。
设置 CAPS 来阻止 location.href.replace
您不需要 Greasemonkey 来完成此任务。Firefox 具有内置功能,可以根据每个站点允许/禁止访问 DOM 对象的属性/方法。它称为可配置安全策略 (CAPS),其描述如下1。
假设最简单的情况的简短指南:
- 关闭 Firefox
- 找到您的配置文件文件夹
- 在此文件夹中找到文件 user.js。如果不存在,请使用文本编辑器(记事本、vim 等)
将以下行添加到 user.js:
用户首选项(“capability.policy.policynames”,“noframebuster”);用户首选项(“capability.policy.noframebuster.sites”,“http://www.annoying-site.com"); user_pref("capability.policy.noframebuster.Location.replace", "noAccess");
当然,您必须将这个域名替换为您想要阻止重定向框架的域名。
从我的博客(justaddwater.dk)中找到更详尽的解释:Firefox 中有关 Framebuster JavaScript 的提示。
答案2
答案3
这GreaseMonkeyFirefox 的附加组件正是为实现这一目的而设计的。
答案4
尝试YesScript 扩展。
YesScript 可让您创建不允许运行 JavaScript 的网站黑名单。