带有iframe的jQuery.empty(),其src是internetexplorer中的pdf breaks插件
jQuery .empty() with iframe whose src is a pdf breaks plugin in internet explorer
在Internet Explorer 8-10中,如果我有一个源为PDF的iframe,并且该iframe被包装在div中,并且我在包装div上调用jQuery.empty()
,则PDF插件和IE之间似乎存在某种交互,导致插件断开,变得非交互(从DOM中删除后无法对文档执行任何操作),在某些情况下忽略滚动,浮动在页面上方。
样本代码:
<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是否在文档中,但我不知道如何做到这一点。
在调用empty()
之前,将帧上的src
属性设置为''
或'about:blank'
将起作用,但之后似乎没有任何效果,这就是我在这种情况下似乎陷入困境的地方。
好吧,这不是一个完美的解决方案,但它现在有效。
解决方案是附加到onbeforeunload,但问题是IE一旦转换为pdf iframe,就不会接受这些回调。因此,我所做的是在文档中的pdf iframe之前添加一种"金丝雀"iframe,并附加到该iframe上进行卸载。当检测到卸载情况时,canary卸载回调将pdf iframe上的src设置为",以便成功卸载。
请注意,只有在调用html()之前使用.empty()时,这才会起作用。
编辑:这是错误的,只有当你对iframe的直接父级调用它时,它才有效,而不是任何高于此级别的调用。
相关文章:
- 在Twitter上用ie9中的空白src访问iframe的contentWindow
- Javascript:使用绝对路径设置img src
- 子字符串/正则表达式以获取字符串中保存的 SRC 值
- Javascript将图像src更改为淡入淡出
- 如何使用Angular动态添加iframe-src
- //而不是在src=“”上使用http://"属性
- 使用:new Image()控制加载html.src=html_URL
- 无法使用nodeJS在html中设置Image src
- 如何动态更改脚本src
- 在不设置协议的情况下,使用javascript/jquery更改iframe-src
- 图像可以从源<img src=""/>.TEXT可以在没有javascript的情况下从外部
- 在字符串中查找所有图像 src URL 并存储在数组中
- Mozilla没有;t在附加视频src后触发视频后台事件
- 使用AngularJs时,如何在img标记具有src-attr时设置数据src
- 插入“;img src"在javascript中
- 如何在使用JavaScript或jQuery刷新父页面后保留iframe-src
- 检索MongoDB binData并显示为<img>src
- 使用blob作为src图像
- 如何使用javascript和xpath获取图像src
- 带有iframe的jQuery.empty(),其src是internetexplorer中的pdf breaks插件