我在Google Chrome上遇到iframe的onLoad事件时出现问题。我创建了一个iframe并为其“src”属性设置了值以从服务器获取文件。在服务器正在处理时,将显示一个等待框,直到客户端获取返回的文件。我尝试使用iframe的onLoad事件来检测客户端何时获取文件以关闭该等待框,但在Google Chrome上,该事件处理程序不起作用。
使用Firefox,当客户端获取文件时,将自动显示“保存到”弹出窗口并触发事件“加载”,但这不会发生在Chrome上。
你能告诉我如何处理这个问题吗?非常感谢你!
答案 0 :(得分:14)
我遇到了这个问题。事实证明,在文件下载时,Chrome触发iframe中没有任何事件。
由于没有要注意的事件,并且您正在返回一个文件(与任何内联内容相关),解决方法我被迫在几秒钟后检查iframe的内容,如果它是空的则假设没有错误,结果处理正确。如果它包含数据(如果有任何错误,我的服务器将返回JSON),然后相应地处理错误数据。
答案 1 :(得分:5)
我遇到了同样的问题,我最终使用了这个插件:http://johnculviner.com/jquery-file-download-plugin-for-ajax-like-feature-rich-file-downloads/
它基于摩根所描述的相同概念,它易于使用且效果很好。
答案 2 :(得分:1)
我解决这个问题的方法是在将要加载iframe的页面设置一个cookie(done = 0),我使用javascript将iframe放到页面上并更改此cookie的值当iframe的源脚本成功运行时(done = 1)。
然后我使用带有settimeout的简单ajax调用来返回cookie的值,当值为1时,我可以触发onload事件(适用于所有其他浏览器)。