我正在寻找建议/解决方法或更好的方法来做到这一点 这一点代码适用于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();
}
感谢您的帮助
答案 0 :(得分:0)
尝试使用.on()
或.delegate()
函数将onload事件处理程序调用分配给#modalIframeId,而不是将其放入要插入的<iframe>
标记中。我很惊讶它适用于FF和Chrome - 大部分时间,由于jQuery如何与页面代码交互,因此使用任何动态代码分配事件处理程序都不起作用。您可能还想尝试为#modalIframeId iframe设置唯一ID - 如果您在页面上多次调用showPDF()函数,它将创建具有重复ID的元素,这会混淆jQuery并产生意外结果。根据我的经验,即使您删除#modalIframeId然后重新添加它,它仍可能会导致问题。每次创建它时都会有一个唯一的ID可以防止这个潜在的问题。
答案 1 :(得分:0)
正如之前的回答所提到的,这里的问题是您正在内联事件处理程序。您正在寻找的功能可以通过简单地分解您的功能来实现。我在这个jsFiddle中证明了这一点:
所有浏览器都会记录'loaded'。
此外,在这种情况下,将'open'传递给jQuery UI的dialog
方法是不必要的。只需致电dialog()
即可。