0

我想做的事:跨源 - 窗口彈出(window.opener爲null)

  1. 從用戶點擊新窗口打開源父窗口第三方URL(不同領域)

  2. 用戶在彈出窗口中進行身份驗證,然後第三方在重定向頁面上提交成功數據。 (像推特)

  3. 從子窗口(PopUpWindow)我必須發回數據回到父窗口。

我做了什麼

var windowReference= window.open('https://ThirdPartyURL', 'CrossDomain', 'width=840,scrollbars=yes,top=0'); 

window.parentMethod= function (input) {alert(input)} 

窗口得到在新窗口中用戶打開被重定向頁面上進行身份驗證,並獲得重定向頁面 返回的數據(子窗口)

window.opener.parentMethod(response); 
在Firefox

其工作但在IE中 window.opener null。原因是跨域。如果第三方URL是當前域,然後它工作正常,但如果它的跨域windowReference得到空 得到它的工作我必須要改變網絡設置 - >安全 - >確認已啓用 它幾乎不可能在每一個做客戶機。

我曾嘗試使用Postmessage,但它支持IE10,在IE8和9中它支持Iframe,因爲在我的情況下,第三方已禁用IFRAME嵌入。

有人可以幫我解決這個問題。任何幫助將不勝感激

回答

0

簡短的回答:你不能。交叉來源的政策有一個原因,完全不允許你做你想做的事(這樣的另一個網站不會運行你的JS和其他方式)。

爲了解決這個問題,你需要找到另一種發送數據的方式(通常是服務器端 - > curl請求)。

+0

一些網站做它你建議。但有一件事我不知道如何關閉子窗口和提交數據回到父窗口如果m使用cur請求或任何其他方式(在服務器端使用) – Salman 2015-03-19 10:24:49