0

我一直在尝试解决这个问题已经有一段时间了:我无法访问窗口的 url,因为它在另一个域上.. 一些解决方案?

function login() {
        var cb = window.open(_url, "windowname1", 'width=800, height=600'); 

        var pollTimer   =   window.setInterval(function() { 
            if (cb.document.url.indexOf(REDIRECT) >= 0) {
                window.clearInterval(pollTimer);
                var url =   cb.document.url;
                acToken =   gup(url, 'access_token');
                tokenType = gup(url, 'token_type');
                expiresIn = gup(url, 'expires_in');
                cb.close();

                validateToken(acToken);
            }
        }, 100);
    }
4

3 回答 3

2

我在 IE9 上遇到了同样的问题,我找到了解决方案:添加 try{} catch{} 并增加 pollTimer 给出的时间:

    function login() {
    var cb = window.open(_url, "windowname1", 'width=800, height=600'); 

    var pollTimer   =   window.setInterval(function() { 
        try {
            if (cb.document.url.indexOf(REDIRECT) >= 0) {
                window.clearInterval(pollTimer);
                var url =   cb.document.url;
                acToken =   gup(url, 'access_token');
                tokenType = gup(url, 'token_type');
                expiresIn = gup(url, 'expires_in');
                cb.close();

                validateToken(acToken);
            }
        } catch (e) {
        }
    }, 500);
}
于 2012-11-13T14:40:49.770 回答
0

你可以控制 _url 的内容吗?

在这种情况下,您可以让它通过 javascript 返回其内容document.write,然后通过引用将其包含在您的当前页面中<script type="text/javascript" src="_url" />

在此之后,您可以随意通过 DOM 访问 _url 的内容。

于 2012-11-13T14:47:36.030 回答
0

不,没有跨域策略劫持的解决方案。这里有一些来自 Mozilla 开发者的快速概述。

如果您解释与其他域的属性究竟有什么关系,document.url也许有人找到了解决方法。

于 2012-05-18T14:53:14.407 回答