当 iframe 在 jQuery 中完成加载时,如何触发事件?

IT技术 javascript jquery
2021-02-08 06:35:25

我必须在页面内加载 PDF。

理想情况下,我想要一个加载动画 gif,一旦 PDF 加载,它就会被替换。

6个回答

你有没有尝试过:

$("#iFrameId").on("load", function () {
    // do something once the iframe is loaded
});
尚未对 PDF 尝试过此操作,但对于普通 URL 它将完美运行。
2021-03-17 06:35:25
我在内部使用它,$(function({})以便首先加载框架。但我没有得到希望的结果。铬 25 Mac
2021-03-21 06:35:25
这不适用于在 iframe 中加载 pdf。在 IE 11 中测试。
2021-03-22 06:35:25
+1 因为虽然这似乎不适用于 iframe 中的 PDF 加载,但它对其他内容类型很有用。
2021-03-26 06:35:25
+1 不完全是原始提问者想知道的(与 pdf 相关),但这个答案确实与问题“当 iframe 在 jQuery 中加载完成时如何触发事件?”相匹配。. 谢谢
2021-03-31 06:35:25

我很确定这是做不到的。

除了 PDF 之外,几乎任何东西都可以工作,甚至是 Flash。(在 Safari、Firefox 3、IE 7 上测试)

太糟糕了。

FWIW,所有这些(甚至 PDF)都在 OS X 上使用 Chrome 为我工作。
2021-04-01 06:35:25
是的,它适用于 Chrome,但不适用于 IE。如果应用程序在网络上,它也必须在 IE 中工作。
2021-04-04 06:35:25

这是为我做的(不是 pdf,而是另一个“onload抗性”内容):

<iframe id="frameid" src="page.aspx"></iframe>
<script language="javascript">
    iframe = document.getElementById("frameid");

    WaitForIFrame();

    function WaitForIFrame() {
        if (iframe.readyState != "complete") {
            setTimeout("WaitForIFrame();", 200);
        } else {
            done();
        }
    }

    function done() {
        //some code after iframe has been loaded
    }
</script>  

希望这可以帮助。

应避免使用 setTimeout() 字符串参数: setTimeout(WaitForIFrame, 200);
2021-04-10 06:35:25

我正在尝试这个并且似乎对我有用http : //jsfiddle.net/aamir/BXe8C/

更大的 pdf 文件:http : //jsfiddle.net/aamir/BXe8C/1/

这在 IE 11 中不起作用。保持“正在加载 PDF...”。我正在寻找一种也适用于 IE 11 的解决方案。
2021-03-17 06:35:25
与@travis 的答案没有太大不同,但由于 attr src change 和 css 的优雅使用,我会 +1。我可以看到有人至少伪造了一个很好的装载机这样做。
2021-03-21 06:35:25
在 PDF 完全加载之前触发 load 事件。
2021-03-23 06:35:25
使用最新的 Chrome 在 OSX 上尝试您的链接并在第一页加载时,它没有用,Loading PDF...但当我刷新页面时,它说PDF Loaded!但这似乎适用于 url :) 所以它对我非常有用。谢谢!
2021-03-25 06:35:25
如果文件设置为下载,而不是在 iframe 中呈现,则这不起作用。
2021-03-26 06:35:25
$("#iFrameId").ready(function (){
    // do something once the iframe is loaded
});

你试过 .ready 吗?

我很确定这是闲置的理论。
2021-03-19 06:35:25
此方法不会按预期工作。来自 JQuery 文档:“只能在匹配当前文档的 jQuery 对象上调用 .ready() 方法,因此可以省略选择器。” 听起来无论使用什么选择器,它都会在 $(document) 之后被触发。
2021-04-03 06:35:25
重复之前的回答!
2021-04-04 06:35:25
正如其他人所说,我对此进行了测试,但没有奏效。Ready 是在文档就绪时调用的,而不是 iframe... 使用 On Load 选项。
2021-04-11 06:35:25