2011-11-15 40 views
14

我已经做了一个小部件,我需要重定向一个父窗口到特定的URL,在弹出窗口中的特定事件后,基于另一个域。如何做到这一点。如何从跨站点弹出窗口访问window.opener?

window.opener.location.replace(url); 
+0

不安全的JavaScript尝试访问框架与网址)) – NiLL

+0

这听起来像跨域脚本,这将被安全限制,以防止;还是我错误地阅读了这个问题? – COBOLdinosaur

+0

我想要kmow,我可以解决这个限制。 – NiLL

回答

27

你只是不能这样做。大多数浏览器都不允许跨站脚本。这里所描述

你可以,但是,与其他窗口通过跨文档消息通信:https://developer.mozilla.org/en/DOM/window.postMessage

最你可以是从弹出的消息发送到揭幕战,听在这样的消息开门红。首先必须自己改变它的位置。

// popup: 
window.opener.postMessage('replace your location', '*'); 

// opener: 
window.onmessage = function (e) { 
    if (e.data === 'replace your location') { 
    window.location.replace(...); 
    } 
}; 
+2

FYI postMessage在弹出窗口之间的IE中不起作用,即使在IE10中 –

+0

我的开瓶器应该位于不同的域www.mydomain.com上。我想给他发一些敏感数据。如果我的揭幕战真的是www.mydomain.com,我该如何检查? –

+0

但是'window.opener'本身在我的情况下返回null。那么我将如何发布消息。 –

相关问题