动态创建iframe的onload事件在IE中永远不会触发
onload event for dynamically created iframe never fires in IE
我有一个问题,IE的iframe的"onload/load"事件将不会触发当我动态创建iframe,设置其源为pdf并将其附加到文档。
我需要监听事件的原因是因为我需要隐藏iframe,直到框架加载完成,然后使用一些效果将其淡入视图。
我已经在我测试过的每个浏览器(Chrome, Firefox, Safari,移动Safari)中工作,但它不会在IE8->IE11中工作。
我看过很多关于IE如何不触发onload事件的帖子,从我收集到的,以下应该是工作的:
// listen for when the iframe's content has been loaded...
if (window.addEventListener)
iframe.addEventListener("load", framedContentLoaded, false);
else if (window.attachEvent)
iframe.attachEvent("onload", framedContentLoaded);
else
iframe.onload = framedContentLoaded;
然而,我的函数framedContentLoaded
从未在IE中被触发。
我已经创建了一个小提琴,再现了这个问题:http://jsfiddle.net/s5TUU/
我也有同样的问题,我使用浏览器检测和onreadystatechange
事件来满足IE,但后来它停止了IE11的工作。
已经报告了这个bug,并且有一个解决方法。
解决方法是将pdf放入带有iframe的html页面中,然后将该html页面加载到主iframe中。你将有嵌套的iframe,它不是很漂亮,但它似乎与IE玩得很好。您将使用onload
事件,使其成为跨浏览器解决方案。你需要使父iframe和子iframe的大小相同,并禁用父iframe上的滚动条,这样你就不会得到双滚动条。
在我的情况下,我使用的是ASP。. Net MVC,我设置我的父iframe src调用一个控制器动作与pdf url作为url参数传递。这个动作是返回一个带有子iframe的视图,并将pdf赋给它的src。
一个简单的解决方案是使用Google Viewer来代替PDF。这不仅显示了PDF,而且onLoad属性无疑也可以工作。Google Viewer: https://docs.google.com/viewer我还应该注意到,在网页上嵌入pdf的正确方法是使用embed标签,而不是iframe。也许,您可以尝试使用onreadystatechange事件代替?
使用jquery。
Var iframe= $(");iframe.attr (…)
$(" #内容"). html (iframe);iframe.load myFunction ();
- 为什么这在IE中的工作方式与在Firefox中不同
- 后焦点更改为IE 11中的地址栏,而不是转移到表单中的下一个控件
- 如何在读取XLS/XLSX本地文件时,使用IE的javascript代码启用未标记为安全的ActiveX控件
- jQuery blueimp文件上传:将N-1个文件上传到IE中的服务器
- 有没有一种方法可以在控制台关闭的情况下让console.log()在IE中记录消息
- 设置倒计时计时器,IE出现问题
- 仅在IE中,javascript中的时区名称不正确
- 在IE中加载Firebug Lite时出现问题
- 为什么我得到错误IE修剪方法是't支持
- IE中的CSS翻转动画:翻转的一面显示镜像内容
- 通过具有IE<11
- IE在将字符串转换为日期时从日期中删除4小时
- 列表样式在IE中未设置为none,但在IE中适用
- IE/Chrome中未定义的函数,但Firefox中没有
- Jquery Modal表单登录与AJAX-ASP经典上的IE 9
- window.opener.document在ie中不起作用
- IE中关于ZK和JavaScript集成的一些错误
- 动画永远循环在Chrome中有效,但在IE中无效
- 为什么我的facebook应用程序在IE中永远循环
- 动态创建iframe的onload事件在IE中永远不会触发