编程语言
首页 > 编程语言> > 我可以在Firefox扩展中检测并阻止JavaScript驱动的重定向吗?

我可以在Firefox扩展中检测并阻止JavaScript驱动的重定向吗?

作者:互联网

基本上,我希望Firefox服从“网站尝试重定向或重新加载页面时警告我”的用户首选项.目前,对于任何类型的门口作家来说,这确实是芝麻开门.

请在related superuser post中找到此不当行为的详细说明.

解决方法:

您可以使用Object.watch()拦截某些属性的更改,例如window.location:

function onLocationChange(id, oldval, newval)
{
  if (confirm("Do you want to navigate to " + newval + "?"))
    return newval;
  else
    return oldval;
}
wnd.watch("location", onLocationChange);
wnd.document.watch("location", onLocationChange);
wnd.location.watch("href", onLocationChange);

您将不得不类似地拦截对其他window.location properties的分配,例如主机或路径名.这种方法的最大缺点是:只能有一个观察者.如果页面安装了自己的观察程序,或者只是调用wnd.unwatch(“ location”),则所有检测都将消失.

在没有任何页面运行JavaScript之前如何进入窗口取决于您使用的是附件SDK还是经典的附件.如果使用的是附加SDK,则可以将page-mod module与contentScriptWhen参数设置为启动.在上面的代码示例中,将wnd替换为unsafeWindow(必须直接访问该窗口,否则它将无法工作).

在经典附加组件中,您注册了content-document-global-created notification的观察者.在这里,您还必须直接访问窗口:

var wnd = XPCNativeWrapper.unwrap(subject);

参见documentation on XPCNativeWrapper.unwrap().

标签:firefox-addon,javascript
来源: https://codeday.me/bug/20191101/1985325.html