JavaScript:打开新标签并检测URL更改

时间:2019-01-29 13:05:34

标签: javascript

我试图用oAuth的URL打开一个新窗口,但是我无法添加任何事件侦听器。

const wind = window.open(msg.data.url);
console.log(wind);
wind.onload = function () {
    wind.onpopstate = function (e) {
        console.log('pop', e);
    };
};

它什么都不做。但是事实证明window.open()给了我一个不完整的窗口对象。这就是我所拥有的。如何为此添加事件监听器?

1

1 个答案:

答案 0 :(得分:1)

根据MDN web docs关于window.open()函数的信息:

  

返回的Window引用可用于访问属性和   只要符合Same-origin的新窗口的方法   政策安全要求。

这意味着,如果您在此网页上的终端上调用window.open("/questions"),则会得到一个完整的窗口对象,但是如果您调用window.open("https://google.com"),则它将仅返回一个简化的对象,您将无法在该对象上进行操作添加事件侦听器。这是为了防止cross-origin攻击。但是,如果新窗口正在侦听该类型的事件,则可以通过Window.postMessage()将数据传输到新窗口对象。有关更多信息,请参见here