我已經做了一個小部件,我需要重定向一個父窗口到特定的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