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

时间:2020-03-05 18:43:48  来源:igfitidea点击:

我必须在页面内加载PDF。

理想情况下,我希望有一个加载的动画gif,一旦加载了PDF,它就会被替换。

解决方案

回答

你有没有尝试过:

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

回答

@Alex aw真是可惜。如果在" iframe"中有一个看起来像html的文档,该怎么办?

<html>
  <head>
    <meta http-equiv="refresh" content="0;url=/pdfs/somepdf.pdf" />
  </head>
  <body>
  </body>
</html>

绝对是黑客,但它可能适用于Firefox。尽管我想知道在这种情况下load事件是否会过早触发。

回答

我可以肯定它无法完成。

除PDF以外,几乎没有其他功能,甚至Flash也可以。 (在Safari,Firefox 3,IE 7上测试)

太糟糕了。

回答

这是我所做的任何操作,它可以在Firefox,IE,Opera和Safari中运行。

<script type="text/javascript">
  $(document).ready(function(){
    doMethod();
  });
  function actionIframe(iframe)
  {
    ... do what ever ...
  }
  function doMethod()
  {   
    var iFrames = document.getElementsByTagName('iframe');

    // what ever action you want.
    function iAction()
    {
      // Iterate through all iframes in the page.
      for (var i = 0, j = iFrames.length; i < j; i++)
      {
        actionIframe(iFrames[i]);
      }
    }

    // Check if browser is Safari or Opera.
    if ($.browser.safari || $.browser.opera)
    {
      // Start timer when loaded.
      $('iframe').load(function()
      {
        setTimeout(iAction, 0);
      }
      );

      // Safari and Opera need something to force a load.
      for (var i = 0, j = iFrames.length; i < j; i++)
      {
         var iSource = iFrames[i].src;
         iFrames[i].src = '';
         iFrames[i].src = iSource;
      }
    }
    else
    {
      // For other good browsers.
      $('iframe').load(function()
      {
        actionIframe(this);
      }
      );
    }
  }
</script>

回答

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

我们是否尝试过.ready?

回答

这对我有用(不是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>

希望这可以帮助。