1

我在 FireFox 中使用 GreaseMonkey,代码如下

if (window.opener) 
{
    alert(window.opener.location.href);
}

但是,我收到一个Permission Denied错误,可能是由于跨域策略。我如何克服这种保护?

4

1 回答 1

1

如果窗口与其打开器位于不同的域中,则不能执行此操作。 对于纯 javascript,阻止此信息被认为是一种安全保障。

对于 Greasemonkey 来说,这可能不是一个安全问题,但 Greasemonkey 的开发人员并没有添加该功能。Greasemonkey 只是普通的 javascript,添加了选择、有限的扩展功能。

您可以为此打开一个功能请求,但除非您能够为两者提供一个很好的案例,否则它不太可能被批准:这是如何有用的,以及它如何不会导致粗心的 GM 用户被“pwned”。


同时,您可以随时 fork Greasemonkey 源代码并构建您自己的版本以打破跨域障碍。

或者,根据您真正想要做的事情,可能存在涉及两个或多个脚本实例通信的解决方法。打开一个新问题并详细描述场景,获得解决方法的帮助。

于 2013-10-06T22:04:32.337 回答