使用jquery ui对话框iframe显示onload即

时间:2012-05-03 19:42:56

标签: jquery jquery-ui iframe

我正在寻找建议/解决方法或更好的方法来做到这一点 这一点代码适用于FF和chrome,但hideProgress不会在IE中调用

function showPDF(url){
       $("#divId")
               .html('<div id="loading">Loading....</div>
                      <iframe id="modalIframeId" width="100%" height="100%" 
                          src='+url+' marginWidth="0" marginHeight="0" frameBorder="0"
                          scrolling="auto" title="Dialog Title" 
                      onload="hideProgress();">Your browser does not support</iframe>')
               .dialog('open');
        return ;
   }
   function hideProgress(){
       $('#loading').hide();
   }

感谢您的帮助

2 个答案:

答案 0 :(得分:0)

尝试使用.on().delegate()函数将onload事件处理程序调用分配给#modalIframeId,而不是将其放入要插入的<iframe>标记中。我很惊讶它适用于FF和Chrome - 大部分时间,由于jQuery如何与页面代码交互,因此使用任何动态代码分配事件处理程序都不起作用。您可能还想尝试为#modalIframeId iframe设置唯一ID - 如果您在页面上多次调用showPDF()函数,它将创建具有重复ID的元素,这会混淆jQuery并产生意外结果。根据我的经验,即使您删除#modalIframeId然后重新添加它,它仍可能会导致问题。每次创建它时都会有一个唯一的ID可以防止这个潜在的问题。

答案 1 :(得分:0)

正如之前的回答所提到的,这里的问题是您正在内联事件处理程序。您正在寻找的功能可以通过简单地分解您的功能来实现。我在这个jsFiddle中证明了这一点:

http://jsfiddle.net/xyctR/2/

所有浏览器都会记录

'loaded'。

此外,在这种情况下,将'open'传递给jQuery UI的dialog方法是不必要的。只需致电dialog()即可。