我有一个在禁用同源策略(即 --disable-web-security
)的 Chrome 中运行的网络应用程序。我使用 window.open()
创建一个新窗口来加载一个有时会重定向的 URI。如果没有发生重定向,我可以在 onload
事件触发时使用 document
属性读取窗口内托管的文档的内容。不幸的是,在确实发生重定向的情况下,onload
似乎永远不会触发,并且从 window.open()
返回的窗口对象不再有用。
这是代码,让您了解发生了什么:
var win = window.open('http://somewhere');
win.onload = function() {
doStuffWith(win.document.body);
win.close();
};
即使在新窗口打开后立即发生重定向,有什么方法可以保留有效的 window
句柄?
根据@CBroe 的建议,我扩展了我的代码以查看如果我稍等片刻是否可以获取窗口的内容。在上面的代码之后,我附加了:
setTimeout(function() {
console.log(win.location);
doStuffWith(win.document.body);
}, 5000);
location
被报告为 swappedout://
(哈!?)并且文档的正文是空的。
最佳答案
问题是,如果重定位不是恰好在大多数浏览器提供的点击事件弹出窗口阻止程序阻止请求之后,在您想要的某些功能成功后,打开一个带有按钮的模式并重定位单击新按钮。这是唯一的方法。不太好,但可以解决问题。
这也适用于负载。
关于javascript - 重定向后从 window.open()'ed 窗口获取内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35461933/