我有一个Greasemonkey脚本,它会打开一个iframe并将一个不同子域中的表单加载到该iframe中。
当iframe提交表单后刷新时,我希望刷新父页面。
我已经可以在iframe刷新时执行一个函数,但我无法让该函数影响父文档。
我理解这是由于浏览器安全模型所致,并且一直在研究使用postMessage在两个窗口之间通信,但我似乎无法弄清楚如何使用它向父级发送重新加载调用。
对于如何完成这个任务的任何建议都将非常有帮助
谢谢
我有一个Greasemonkey脚本,它会打开一个iframe并将一个不同子域中的表单加载到该iframe中。
当iframe提交表单后刷新时,我希望刷新父页面。
我已经可以在iframe刷新时执行一个函数,但我无法让该函数影响父文档。
我理解这是由于浏览器安全模型所致,并且一直在研究使用postMessage在两个窗口之间通信,但我似乎无法弄清楚如何使用它向父级发送重新加载调用。
对于如何完成这个任务的任何建议都将非常有帮助
谢谢
使用:
window.parent.postMessage('Hello Parent Frame!', '*');
请注意 '*' 表示“任意来源”。如果可能,请将其替换为目标来源。
在您的父框架中,您需要:
window.addEventListener('message', receiveMessage, false);
function receiveMessage(evt)
{
if (evt.origin === 'http://my.iframe.org')
{
alert("got message: "+evt.data);
}
}
将“my.iframe.org”替换为您的iFrame来源。 (您可以跳过源验证,但一定要非常小心处理获取的数据)。
window.top.postMessage('Hello Parent Frame!', '*');
- rlv-dan