2011-11-01 89 views
2

我打開另一個網站(google oauth2)的彈出窗口。我加載的站點將在標題欄中顯示信息,所以我想監視標題欄以提取信息。但是,每當我這樣做時,即使窗口確實有標題,標題仍然是空白的。這就是我現在正在嘗試的測試。如何獲取由彈出窗口打開的窗口的標題?

var authWindow = null; 

function popup(url) { 
    authWindow = window.open(url, 'Authentication', 'height=600,width=450'); 

    if (window.focus) { 
     authWindow.focus(); 
    } 

    $(authWindow.document).ready(monitorForAuthCode); 
} 

function monitorForAuthCode() 
{ 
    if (authWindow && authWindow.closed == false) 
    { 
     var code = authWindow.document.title; 

     $('#hash').html($('#hash').html() + code + '<br>'); 

     setTimeout(monitorForAuthCode, 1000); 

    } 
} 

回答

2

其他網站的彈出式(谷歌的oauth2)

您無法讀取,因爲same origin policy的另一個領域的內容。

+2

然後有人需要告訴谷歌他們錯了,或者我誤解他們說的是什麼。從他們的OAuth2指南http://code.google.com/apis/accounts/docs/OAuth2.html獲得的本地應用程序中可以看到:在許多平臺上,您的應用程序應該能夠監視它創建的瀏覽器窗口的窗口標題當它看到有效的響應時關閉窗口。如果您的平臺不支持,您可以指示用戶將代碼複製並粘貼到您的應用程序中。 – esac

+0

@esac訣竅是,這是爲_native應用程序_,其中並非所有的應用程序都受到JavaScript的跨源限制。例如,您的應用的本機代碼部分可以使用本機API來檢查標題欄。或者,如果您的應用正在使用像[CEF](https://code.google.com/p/chromiumembedded/)這樣的嵌入式瀏覽器實例,則可以將其配置爲禁用交叉源限制(請確保只加載了儘管)將自己的可信JS代碼放入瀏覽器窗格中。 – peterflynn

相關問題