javascript - 重定向后从 window.open()'ed 窗口获取内容

标签 javascript same-origin-policy

我有一个在禁用同源策略(即 --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/

相关文章:

javascript - 具有相同域的同源策略,但 https

javascript - 需要帮助以幻灯片方式显示数组项

javascript - Web 浏览器无法读取 javascript 等。

javascript - 可扩展属性设置为 true 并且没有子节点的树节点不会呈现加号图标

javascript - Immutable.js 将值映射到数组

firefox - 如何在 Firefox 上启用 CORS

javascript - 如何正确断言 Number.prototype.toLocaleString ("sv-SE") 返回的值?

javascript - js跨域到iframe

javascript - Access-Control-Allow-Origin 和 CORS 背后的概念是什么?

web-services - 请求 header 中的起源邪恶.示例