我有一个 Greasemonkey 脚本,它向页面添加了一个 iframe(称为第 1 页)。iframe 包含另一个页面(称为第 2 页)。该脚本也在第 2 页上运行。第 1 页和第 2 页位于不同的域上。
我想允许在第 2 页中运行的代码调用第 1 页上的函数。鉴于对 Greasemonkey 代码的限制较低,这可能吗?
我有一个 Greasemonkey 脚本,它向页面添加了一个 iframe(称为第 1 页)。iframe 包含另一个页面(称为第 2 页)。该脚本也在第 2 页上运行。第 1 页和第 2 页位于不同的域上。
我想允许在第 2 页中运行的代码调用第 1 页上的函数。鉴于对 Greasemonkey 代码的限制较低,这可能吗?
浏览器会阻止这种情况,因为域不同。
您可以使用一些技巧在帧之间进行通信:
广告 3:您将无法读取其他框架的 URL,但您可以设置它。如果您将 URL 更改为完全相同的页面,但在 URL 中添加了 #anchor 组件,则该页面实际上不会重新加载:
window.frames["childFrame"].location.href = "http://www.somewebsite.com/#message"
然后,您需要向外部页面添加一个脚本,该脚本定期轮询它的 location.href 并处理消息。是的,它很丑,但如果做得好,它可以在所有常见的浏览器中运行。