我有谷歌浏览器的iframe onLoad事件的问题。我创建了一个iframe并为其“src”属性设置值以从服务器获取文件。在服务器正在处理时,显示一个等待框,直到客户端获得返回的文件。我尝试使用iframe的onLoad事件来检测客户端何时获取文件以关闭该等待框,但在Google Chrome上,该事件处理程序不起作用。
与Firefox,当客户端获得一个文件,“保存到”弹出会自动显示和事件“负载”将被解雇,但这无法在Chrome发生。
你能告诉我如何处理这个问题呢?非常感谢!Chrome获取下载文件时会触发哪个JS事件?
回答
我碰到这个确切的问题。事实证明Chrome在文件下载时在iframe中完全没有触发事件。
由于没有需要注意的事件,并且您正在返回一个文件(与任何内联内容相关),所以我不得不在几秒钟后检查iframe的内容,如果它是空的,那么假定没有错误并且结果处理正确。如果它包含数据(如果有错误,我的服务器将返回JSON),然后相应地处理错误数据。
我解决这个问题的方法是设置一个cookie(完成= 0),当页面将要加载iframe时,我使用javascript将iframe放到页面上,并更改此值当iframe的源代码脚本成功运行时(cookie = 1),cookie。
然后我用一个简单的Ajax调用了setTimeout的返回cookie的值,当值是1,我可以触发onload事件(对所有其他浏览器上运行)。
刚刚完成评论。你看到这个[计算器上后(http://stackoverflow.com/questions/1106377/detect-when-browser-receives-file-download)? – 2012-10-11 08:34:29
我碰到同样的问题,我结束了使用这个插件:http://johnculviner.com/jquery-file-download-plugin-for-ajax-like-feature-rich-file-downloads/
它是基于相同的概念摩根介绍,很容易使用,和它的工作很大。
- 1. JS BeforeUnload事件有时不会触发
- 2. extjs 3 - 当extjs完全加载时会触发哪个事件
- 3. Ext JS:从Chrome下载文件的iframe加载事件
- 4. 获取触发事件
- 5. Angular JS不会触发滚动事件
- 6. D3.js事件触发加载
- 7. 选择加载哪个JS文件不会加载文件
- 8. Chrome中触发的事件
- 9. Chrome FileReader未触发事件
- 10. 当vtiger关闭时,哪个事件会弹出触发器?
- 11. Pimcore第一次产品保存时会触发哪个事件?
- 12. Android:在屏幕键盘出现时会触发哪个事件?
- 13. 当子菜单项打开时会触发哪个事件
- 14. 在X.org中切换kb布局时会触发哪个事件
- 15. 当treeview项目失去焦点时会触发哪个事件
- 16. 当AngularJS完成渲染时会触发哪个事件?
- 17. Drop事件不触发/ JS中触发
- 18. 获取触发事件的小部件?
- 19. php&js combobox触发事件
- 20. JS触发keydown事件
- 21. 哪个会先触发WPF控件中的绑定触发器或事件
- 22. C#加载事件不会触发
- 23. 单击按钮时要触发的事件也会触发另一个事件
- 24. WPF VisualState - “按下”事件不会触发
- 25. 如何创建一个事件下载完成时触发
- 26. 我怎么知道哪个元素从js触发事件?
- 27. 从URL中获取触发以Python下载的文件
- 28. 哪个事件触发回调函数
- 29. Winforms:哪个事件触发? combobox.selectedindexchanged OR bindingsource.currentchanged
- 30. ASP.NET按钮单击事件在用户下载后不会触发文件
我想这就是插件从这个答案做什么http://stackoverflow.com/a/20973242/1175496 – 2015-02-20 19:38:31
请参阅以下帖子的示例代码:https://stackoverflow.com/questions/12076494/ onload事件,在-I帧 - 不工作,如果的iframe具备的,非HTML文档,在-SRC-PDF-或-T/12190776#12190776。我花了一点时间才弄清楚其他地方的其他一些答案,这些答案指的是使用'onload'事件,其中实际上是错误的。这可能与最新的网页浏览器更符合规范有关。 – RZet 2017-10-20 09:50:10