0

私はこれを行うための提案/回避策またはより良い方法を探しています

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()または.delegate()関数を使用して onload イベント ハンドラー呼び出しを #modalIframeId に割り当ててみてください。<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' はすべてのブラウザーでログに記録されます。

さらに、この場合、jQuery UI のdialogメソッドに「open」を渡す必要はありません。電話するだけdialog()です。</p>

于 2012-05-04T02:31:20.180 に答える