我的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/
答案 0 :(得分:1)
我有同样的问题,我使用浏览器检测和onreadystatechange
事件来迎合IE,但后来它停止了IE11的工作。
This bug has been reported并且提到了一种解决方法。
解决方法是将pdf放入带有iframe的html页面,然后将该html页面加载到主iframe中。你将拥有嵌套的iframe,但它并不漂亮,但似乎与IE配合得很好。您将使用onload
事件使其成为跨浏览器解决方案。
您需要使父级和子级iframe的大小相同,并禁用父级iframe上的滚动条,这样您就不会获得双滚动条。
在我的情况下我使用ASP.Net MVC,我设置我的父iframe src来调用控制器动作,并将pdf url作为url参数传递。该操作返回了一个带有子iframe的视图,并将pdf分配给了它的src。
答案 1 :(得分:0)
一个简单的解决方案就是简单地使用Google Viewer for PDF。这不仅显示了PDF,而且onLoad属性无疑也会起作用。 Google Viewer:https://docs.google.com/viewer我还应该注意,在网页上嵌入PDF的正确方法是使用embed标记,而不是iframe。也许,您可以尝试使用onreadystatechange事件吗?
答案 2 :(得分:0)
使用jquery为此。
Var iframe = $(""); iframe.attr( .... )
$("#含量&#34)。HTML(IFRAME); iframe.load(myFunction的);