javascript - jQuery .empty() 与 iframe,其 src 是 Internet Explorer 中的 pdf 中断插件

标签 javascript jquery html internet-explorer iframe

在 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/

相关文章:

javascript - 使用 Angular js 删除 IE8 中的#params

javascript - 使用 window.print() 强制重复的 printElement 转到页面底部;

php - 我想在主页 WordPress 中显示自定义分类法列表

javascript - 使用转换时在 HTML5 Canvas 上绘制清晰的 1px 线条

javascript - Array.map() 中的箭头函数 VS 普通函数

javascript - 使用 jquery/javascript 读取值

javascript - webpack编译一个文件夹下的所有文件

javascript - HTML Onclick 不适用于负 z 索引

javascript - 动态添加的javascript代码中的缓存问题

javascript - 使用 NodeJs、Express、EJS 从 Mysql 获取图像