在 Internet Explorer 8-10 中,如果我有一个源为 PDF 的 iframe,并且该 Iframe 包装在 div 中,并且我在该包装 div 上调用 jQuery.empty()
, PDF 插件和 IE 之间似乎存在某种交互,导致插件崩溃、变得非交互(从 DOM 中删除后无法对文档执行任何操作),并且在某些情况下忽略滚动、 float 页面上方。
示例代码:
<button id="remove">remove</button>
<div style="height:2000px">
<div style="height:500px; width:800px;" id="embedDiv">
<iframe style="width:100%; height:100%;" src="somepdf.pdf"></iframe>
</div>
</div>
<script type="text/javascript">
$(function () {
$("#remove").click(function () {
$("#embedDiv").html("Some Content!");
});
});
</script>
工作示例可以在 http://jsfiddle.net/j2e56/ 找到
调用 .empty() 后有什么方法可以隐藏/删除此嵌入的 pdf 吗?我在一个环境中工作,我真的不知道如何或何时从页面中删除我的框架,并且我无法控制如何删除它。我可以使用 setInterval 定期检查 iframe 是否仍在文档中,但我不知道该怎么做。
将框架上的 src
属性设置为 ''
或 'about:blank'
将在 empty()< 之前起作用
已被调用,但之后似乎没有任何效果,这就是我似乎陷入这种情况的地方。
最佳答案
好吧,这不是完美的解决方案,但目前有效。
解决方案是附加到 onbeforeunload,但问题是一旦转换为 pdf iframe,IE 将不会接受这些回调。所以我所做的就是在文档中的 pdf iframe 之前添加一种“金丝雀”iframe,并附加到该 iframe 上以进行卸载。当检测到卸载情况时,canary 卸载回调会将 pdf iframe 上的 src 设置为 '',以便可以成功卸载。
请注意,只有在调用 html() 之前使用 .empty() 时,这才有效。
编辑:这是错误的,只有当您针对 iframe 的直接父级调用它时,它才有效,而不是上面的任何内容。
关于javascript - jQuery .empty() 与 iframe,其 src 是 Internet Explorer 中的 pdf 中断插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17556954/