当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>
希望这可以帮助。