2012-05-03 6 views
0

jqueryのUIダイアログはiframeにonloadイベントを示すコードのこの小さなビットはFFとクロムのために動作しますが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

あなたの質問がありますか? IEデバッグコンソールでエラーが発生していますか? –

+0

こんにちはエラーはありません、私はhideProgressのconsole.logを持っていて、それはFFのために表示されましたが、クロムはIEの何も – randy

答えて

0

タグに挿入する代わりに、.on()または.delegate()関数を使用して、#modalIframeIdへのonloadイベントハンドラの呼び出しを割り当ててみてください。私はそれがFFとChromeでうまくいくことに驚いています。ほとんどの場合、jQueryがページのコードとどうやって相互作用するかのために、ダイナミックなコードでそのようなイベントハンドラを割り当てることはできません。 #modalIframeId iframeの一意のIDを持つことを試してみることもできます。ページ上でshowPDF()関数を複数回呼び出すと、重複するIDを持つ要素が作成され、jQueryが混乱し、予期しない結果が生じることがあります。 #modalIframeIdを削除してから再追加しても、問題が発生する可能性があります。一意のIDを作成するたびに、この潜在的な問題を防ぐことができます。

+0

私は試しました $( "#modalIframeId").live( "load"、function(event) { console.log( 'modalIframeId onLoad'); $( '#loading')。hide(); }); と$( '#1 modalIframeId')負荷(関数(){ はconsole.log( 'modalIframeIdのonLoad'); $( '#ローディング'))(非表示; })。 も呼び出されていないようです。 BTW私はID modalIframeIdを使って私が安全だと思ったのは、モーダルダイアログだったからです。私はちょうどあなたが.on()か.delegate()と言いました。私はそれらを使用する方法を研究する必要があります。 – randy

+0

私はいくつかのことを試しましたが、何も動作していないようです。 my機能は次のようになります:: 'function showPDF(url){ $("#divId ") .html( '

Loading....