使用 postmessage 的跨域 iframe 访问 - 访问被拒绝
Cross domain iframe access using postmessage - access denied
我正在使用 greasemonkey 来尝试自动填充数据。在我想要从中提取数据的页面上,我将一个按钮附加到文档。此按钮创建一个框架,其中包含我要将数据推送到的网站。
根据我在 SO 和其他地方看到的内容,我 认为 我应该能够使用 postmessage 将信息发送到 iframe。为此,我需要获取该帧的 contentWindow。
现在,当我创建框架时,我可以访问 frame.contentWindow。如果我尝试使用 document.getElementById("frameid").contentWindow 从另一个函数中获取 contentWindow,我会得到 "access denied".
我还在创建 iframe 时毫无问题地将 window 引用存储在全局变量中,但是如果我尝试从另一个函数访问该变量,我会再次遇到相同的 "access denied" 错误.
我对这一切都很陌生,所以也许我只是在做一些愚蠢的事情,但谁能澄清这种行为是否正常?如果它是正常的,那么如果我在需要时无法获取 contentWindow,我该如何使用 postmessage 将信息发送到该 iframe? :s
非常感谢任何帮助。谢谢:)
上周,我遇到了完全相同的问题,并根据相关的 Mozilla 开发者文档修复了它。 https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage
这是一个例子:
https://gist.github.com/nesimtunc/cbfee61071ab46459b5c
我正在使用 greasemonkey 来尝试自动填充数据。在我想要从中提取数据的页面上,我将一个按钮附加到文档。此按钮创建一个框架,其中包含我要将数据推送到的网站。
根据我在 SO 和其他地方看到的内容,我 认为 我应该能够使用 postmessage 将信息发送到 iframe。为此,我需要获取该帧的 contentWindow。
现在,当我创建框架时,我可以访问 frame.contentWindow。如果我尝试使用 document.getElementById("frameid").contentWindow 从另一个函数中获取 contentWindow,我会得到 "access denied".
我还在创建 iframe 时毫无问题地将 window 引用存储在全局变量中,但是如果我尝试从另一个函数访问该变量,我会再次遇到相同的 "access denied" 错误.
我对这一切都很陌生,所以也许我只是在做一些愚蠢的事情,但谁能澄清这种行为是否正常?如果它是正常的,那么如果我在需要时无法获取 contentWindow,我该如何使用 postmessage 将信息发送到该 iframe? :s
非常感谢任何帮助。谢谢:)
上周,我遇到了完全相同的问题,并根据相关的 Mozilla 开发者文档修复了它。 https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage
这是一个例子: https://gist.github.com/nesimtunc/cbfee61071ab46459b5c