1

我有一个父母打开一个新窗口,并试图检测子窗口何时加载。在 Chrome 中,我尝试过

open('http://www.google.com').onload = function() { alert(location.href); };

但这似乎不起作用。

为什么上述方法不起作用?有替代品吗?

4

3 回答 3

0

该方法应该有效(并且对我有效),但在打开包含来自不同域的文档的窗口时无效。

出于安全原因,新窗口不会将加载事件分派到另一个域的文档。

于 2012-09-01T19:04:40.063 回答
0

如果您想绝对确定页面已加载,您可以使用消息传递。

如果您能够使用 HTML5,则有一个名为web-messaging的新功能。这对跨域源非常有效。

如果 HTML5 不是一个选项,请改用 JS。我使用了一个名为windowmsg的简单 jQuery 插件。它对我来说非常有效。我真的不确定这是否适用于跨站点环境,但我认为它应该。

请注意此类解决方案提供的安全问题。

于 2012-09-01T19:28:40.200 回答
-1

从技术上讲,子窗口和父窗口是浏览器的两个不同实例。我们称它们为子窗口和父窗口。它们无法相互访问。因此,在第二个窗口中单击 HTML 元素时,不可能在一个窗口中执行任何操作。

因此,我建议您在需要访问权限时不要打开新窗口。您可以使用花式框或灯箱,它们实际上是同一窗口的一部分,并且您可以控制。

于 2012-09-01T18:27:13.910 回答