2011-05-25 50 views
14

我有谷歌浏览器的iframe onLoad事件的问题。我创建了一个iframe并为其“src”属性设置值以从服务器获取文件。在服务器正在处理时,显示一个等待框,直到客户端获得返回的文件。我尝试使用iframe的onLoad事件来检测客户端何时获取文件以关闭该等待框,但在Google Chrome上,该事件处理程序不起作用。
与Firefox,当客户端获得一个文件,“保存到”弹出会自动显示和事件“负载”将被解雇,但这无法在Chrome发生。
你能告诉我如何处理这个问题呢?非常感谢!Chrome获取下载文件时会触发哪个JS事件?

回答

13

我碰到这个确切的问题。事实证明Chrome在文件下载时在iframe中完全没有触发事件。

由于没有需要注意的事件,并且您正在返回一个文件(与任何内联内容相关),所以我不得不在几秒钟后检查iframe的内容,如果它是空的,那么假定没有错误并且结果处理正确。如果它包含数据(如果有错误,我的服务器将返回JSON),然后相应地处理错误数据。

+0

我想这就是插件从这个答案做什么http://stackoverflow.com/a/20973242/1175496 – 2015-02-20 19:38:31

+0

请参阅以下帖子的示例代码:https://stackoverflow.com/questions/12076494/ onload事件,在-I帧 - 不工作,如果的iframe具备的,非HTML文档,在-SRC-PDF-或-T/12190776#12190776。我花了一点时间才弄清楚其他地方的其他一些答案,这些答案指的是使用'onload'事件,其中实际上是错误的。这可能与最新的网页浏览器更符合规范有关。 – RZet 2017-10-20 09:50:10

1

我解决这个问题的方法是设置一个cookie(完成= 0),当页面将要加载iframe时,我使用javascript将iframe放到页面上,并更改此值当iframe的源代码脚本成功运行时(cookie = 1),cookie。

然后我用一个简单的Ajax调用了setTimeout的返回cookie的值,当值是1,我可以触发onload事件(对所有其他浏览器上运行)。

+1

刚刚完成评论。你看到这个[计算器上后(http://stackoverflow.com/questions/1106377/detect-when-browser-receives-file-download)? – 2012-10-11 08:34:29

相关问题