我有一个父母打开一个新窗口,并试图检测子窗口何时加载。在 Chrome 中,我尝试过
open('http://www.google.com').onload = function() { alert(location.href); };
但这似乎不起作用。
为什么上述方法不起作用?有替代品吗?
我有一个父母打开一个新窗口,并试图检测子窗口何时加载。在 Chrome 中,我尝试过
open('http://www.google.com').onload = function() { alert(location.href); };
但这似乎不起作用。
为什么上述方法不起作用?有替代品吗?
该方法应该有效(并且对我有效),但在打开包含来自不同域的文档的窗口时无效。
出于安全原因,新窗口不会将加载事件分派到另一个域的文档。
如果您想绝对确定页面已加载,您可以使用消息传递。
如果您能够使用 HTML5,则有一个名为web-messaging的新功能。这对跨域源非常有效。
如果 HTML5 不是一个选项,请改用 JS。我使用了一个名为windowmsg的简单 jQuery 插件。它对我来说非常有效。我真的不确定这是否适用于跨站点环境,但我认为它应该。
请注意此类解决方案提供的安全问题。
从技术上讲,子窗口和父窗口是浏览器的两个不同实例。我们称它们为子窗口和父窗口。它们无法相互访问。因此,在第二个窗口中单击 HTML 元素时,不可能在一个窗口中执行任何操作。
因此,我建议您在需要访问权限时不要打开新窗口。您可以使用花式框或灯箱,它们实际上是同一窗口的一部分,并且您可以控制。