【问题标题】:Javascript/Jquery how to detect click in another windowJavascript / Jquery如何检测另一个窗口中的点击
【发布时间】:2013-12-05 01:17:35
【问题描述】:

我有一个父窗口,它必须使用 open() 方法打开另一个窗口。子窗口仅包含简单的 html 文档,其表单存储在同一域空间中。现在的问题是,如何从父窗口中检测到提交按钮被点击了?我想用最简单最优雅的方式解决它。

谢谢。

【问题讨论】:

  • 子窗口应该有一个引用父窗口的opener 属性。在子窗口中,您只需执行window.opener.whatever()。父窗口也可以访问子窗口,只需将调用open的结果赋值给一个变量,就可以得到那个窗口的句柄。当然,所有这些都假设它们在同一个域中。

标签: javascript jquery window


【解决方案1】:

最优雅的方式是利用window.parent.postMessage 函数。

在子窗口中

document.onclick = function() { window.parent.postMessage({message: 'clicked'}) }

在父窗口中

function messageReceived(e) {

    var data = e.data;

    // do something here

}

if(window.addEventListener)
    window.addEventListener('message', messageReceived);
else
    window.attachEvent('onmessage', messageReceived);

【讨论】:

  • parent 应该是opener... 但是为什么要使用postMessage?每个窗口都有一个句柄,你可以设置一些属性或者直接调用一个函数
猜你喜欢
  • 2017-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-16
  • 2016-03-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多