【问题标题】:How can child window call a function on its parent window?子窗口如何在其父窗口上调用函数?
【发布时间】:2014-01-08 22:12:49
【问题描述】:

我有一个在 IE 浏览器中运行的本地 HTML。当本地 HTML 打开一个在远程 HTTP 服务器上加载页面的子窗口时。在子窗口中进行几次用户交互后,最终的远程页面运行 JavaScript 来关闭子窗口,我想在父窗口中调用一个函数以在关闭之前传回一些信息。

我以为我可以简单地在子窗口中进行以下调用

window.parent.CallbackFunct();

但是,调用不起作用。我做了一些研究,有人提到如果父窗口通过 file:\ 加载 HTML(这是我的情况),由于同源策略,子窗口无法调用父窗口函数。

JavaScript window.opener call parent function

我上面的链接建议通过 HTTP:// 访问所有页面,但我不能。父窗口必须从本地文件系统访问页面。

有什么方法可以让它工作吗?

【问题讨论】:

  • window.opener.CallbackFunct() 应该怎么做?
  • 也许可以试试stackoverflow.com/q/3076414/740639的一些建议
  • @meriusnn window.opener.CallbackFunct() 也不起作用。和 window.parent.CallbackFunct() 一样
  • @Walter 感谢您的链接。这是一篇关于处理 COP 的非常全面的文章。在这些选项中,window.postMessage 看起来是最有前途的方法,并且相信它可以与 IE10 一起使用。但是,它在 IE10 中对我不起作用。我尝试了以下方法:
  • 1) 在父窗口上定义并添加消息监听函数; 2)在子窗口中,我通过window.parent.postMessage('msg', '*'); 向父窗口发送消息

标签: javascript html window


【解决方案1】:

你可以这样从子窗口调用父函数:

window.opener.your_function()

【讨论】:

    猜你喜欢
    • 2017-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-15
    • 1970-01-01
    • 1970-01-01
    • 2011-07-11
    • 2011-10-19
    相关资源
    最近更新 更多