2011-11-01 51 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

相关问题