0

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

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();
   }

谢谢你的帮助

4

2 回答 2

0

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

于 2012-05-03T20:45:12.037 回答
0

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

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

'loaded' 已登录所有浏览器。

此外,在这种情况下,不需要将“open”传递给 jQuery UI 的dialog方法。只要打电话dialog()。​</p>

于 2012-05-04T02:31:20.180 回答