我已经做了一个小部件,我需要重定向一个父窗口到特定的URL,在弹出窗口中的特定事件后,基于另一个域。如何做到这一点。如何从跨站点弹出窗口访问window.opener?
window.opener.location.replace(url);
我已经做了一个小部件,我需要重定向一个父窗口到特定的URL,在弹出窗口中的特定事件后,基于另一个域。如何做到这一点。如何从跨站点弹出窗口访问window.opener?
window.opener.location.replace(url);
你只是不能这样做。大多数浏览器都不允许跨站脚本。这里所描述
你可以,但是,与其他窗口通过跨文档消息通信: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(...);
}
};
FYI postMessage在弹出窗口之间的IE中不起作用,即使在IE10中 –
我的开瓶器应该位于不同的域www.mydomain.com上。我想给他发一些敏感数据。如果我的揭幕战真的是www.mydomain.com,我该如何检查? –
但是'window.opener'本身在我的情况下返回null。那么我将如何发布消息。 –
在某些情况下,可以这样做,但只能使用不同的子域,而不能完全不同的域。见Cross site scripting on the same domain, different sub domains。
但是由于postMessage()
在当前浏览器中广泛存在,因此您应该始终喜欢postMessage()
,正如@ian-kuca所建议的。
不安全的JavaScript尝试访问框架与网址)) – NiLL
这听起来像跨域脚本,这将被安全限制,以防止;还是我错误地阅读了这个问题? – COBOLdinosaur
我想要kmow,我可以解决这个限制。 – NiLL