Javascript 如何在iframe';s使用Greasemonkey的父对象
我有一个Greasemonkey脚本,它在页面中添加了一个iframe(称为第1页)。iframe包含另一个页面(称为第2页)。脚本也在第2页上运行。第1页和第2页位于不同的域上Javascript 如何在iframe';s使用Greasemonkey的父对象,javascript,iframe,greasemonkey,Javascript,Iframe,Greasemonkey,我有一个Greasemonkey脚本,它在页面中添加了一个iframe(称为第1页)。iframe包含另一个页面(称为第2页)。脚本也在第2页上运行。第1页和第2页位于不同的域上 我希望允许第2页中运行的代码调用第1页上的函数。鉴于Greasemonkey代码的限制较低,这可能吗?浏览器将阻止这种情况,因为域不同 有两种技巧可用于帧间通信: 将其他网站的DNS记录添加到外部网站的域(www.somewebsite.com和someapp.somewebsite.com)。然后在两个页面的Java
我希望允许第2页中运行的代码调用第1页上的函数。鉴于Greasemonkey代码的限制较低,这可能吗?浏览器将阻止这种情况,因为域不同 有两种技巧可用于帧间通信:
window.frames["childFrame"].location.href = "http://www.somewebsite.com/#message"
然后,您需要向外部页面添加一个脚本,定期轮询其location.href并处理消息。是的,这很难看,但如果做得好,它将在所有普通浏览器中都能工作。Ooh,postMessage()将很好地工作。我的想法是利用授予Greasemonkey脚本的特权绕过相同的域限制。这样比较好,;postMessage()实际上是用于此目的的。:)我现在必须支持IE7,所以我放弃了postMessage()。我也做不到#我可以,但我不能让它工作。至少在FF3中,我没有权限设置window.parent.location.href,甚至没有权限设置为父级的当前URL。我遗漏了什么吗?嗯,我只使用这种方法从父帧到嵌入帧进行通信,而不是相反。可能会有一些限制,以防止框架爆发并强制自己成为顶部页面。奇怪的是,我可以在顶部窗口上设置哈希,但不能在iframe的父窗口上设置哈希,而父窗口本身就是顶部窗口中的iframe。我提出了一个新问题: