2011-11-15 39 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。那麼我將如何發佈消息。 –

相關問題