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

Ale*_*nov 94 javascript jquery

我必须在页面中加载PDF.

理想情况下,我希望有一个加载动画gif,一旦PDF加载后替换.

tra*_*vis 214

你有没有尝试过:

$("#iFrameId").on("load", function () {
    // do something once the iframe is loaded
});
Run Code Online (Sandbox Code Playgroud)

  • +1因为虽然这似乎不适用于iframe中的PDF加载,但它对其他内容类型很有用. (18认同)
  • +1并不完全是原始提问者想要知道的(与pdf有关),但这个答案确实符合"当iframe在jQuery中完成加载时如何触发事件?" .谢谢 (3认同)

Ant*_*emi 36

我很确定它无法完成.

除了PDF之外的其他任何东西,甚至是Flash.(在Safari,Firefox 3,IE 7上测试过)

太糟糕了.

  • http://web.archive.org/web/20100914111251/http://sykari.net/stuff/iframe/ (2认同)

小智 7

这对我来说(不是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>  
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.

  • 应避免使用setTimeout()字符串参数:`setTimeout(WaitForIFrame,200);` (7认同)
  • 在带有html内容的firefox中不起作用 (2认同)

Aam*_*idi 7

我正在尝试这个并且似乎在为我工作:http: //jsfiddle.net/aamir/BXe8C/

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


kei*_*ics 5

$("#iFrameId").ready(function (){
    // do something once the iframe is loaded
});
Run Code Online (Sandbox Code Playgroud)

你尝试过吗?


小智 5

我尝试了开箱即用的方法,我没有测试这个PDF内容,但它确实适用于普通的基于HTML的内容,继承人如何:

第1步:将iframe包装在div包装器中

第2步:将背景图像添加到div包装器:

.wrapperdiv{
  background-image:url(img/loading.gif);
  background-repeat:no-repeat;
  background-position:center center; /*Can place your loader where ever you like */
}
Run Code Online (Sandbox Code Playgroud)

第3步:在你的iframe标签中添加 ALLOWTRANSPARENCY="false"

我们的想法是在包装器div中显示加载动画,直到iframe加载后加载iframe将覆盖加载动画.

试试看.