2010-11-26 11 views
0

iframeに添付してpdfをダウンロードした後にロードイベントが発生していません。何か案は?iframeロードイベントがjqueryでトリガーされていません

jQuery.download = function(url, data, method, callback){ 
    var inputs = ''; 
    var iframeX; 
    var downloadInterval; 
    if(url && data){ 
     // remove old iframe if has 
     if($("#iframeX")) $("#iframeX").remove(); 
     // creater new iframe 
     iframeX= $('<iframe src="[removed]false" name="iframeX" id="iframeX"></iframe>').appendTo('body').hide(); 


      iframeX.load(function(){ 
       callback(); 
      }); 



     //split params into form inputs 
     $.each(data, function(p, val){ 
      inputs+='<input type="hidden" name="'+ p +'" value="'+ val + '" />'; 
     }); 

     //create form to send request 
     $('<form action="'+ url +'" method="'+ (method||'post') + '" target="iframeX">'+inputs+'</form>').appendTo('body').submit().remove(); 
    }; 
}; 

は私の答え:

はそう、これは私はこの問題を解決するようになったこれまでの最高のハックですが、それは「名前を付けて保存」ポップアップウィンドウがフォーカスの外にメインウィンドウを作るという事実を使用しています。

var onBlur=function(){ 
    $('#spinner').html(""); 
} 

    if (/*@[email protected]*/false) { // check for Internet Explorer 
     document.onfocusout = onBlur; 
    } else { 
     window.onblur = onBlur; 
    } 

答えて

0

私はあなたの例では、任意のPDFの読み込みコードが表示されていないが、私の推測では、フレーム内で実行されているPDFビューアが何のブラウザではありませんので、それは標準的なHTMLのイベントをサポートしていないということです。

には、が必要です。それから、私たちが助けてくれるかもしれない

私は何を意味しますか:どこにHTMLイベントを生成する可能性のあるHTMLドキュメントがロードされていますか?フレームにPDFを挿入します。 PDFはHTMLイベントを生成しません。

解決策は、最初にAJAXリクエスト(バックグラウンドで実行)とフォームPOSTの2つのリクエストを送信することです。サーバーは、PDFがクライアントに送信されてからAJAX要求に応答するまで、AJAX要求を保留しておく必要があります。それは、PDFが送信されたときの指示を与えるでしょう。しかしそれは完璧ではありません。

+0

pdfビューアはありません。私はフォームを提出し、レスポンスでコンテンツタイプ= pdfを取得すると、ブラウザは "名前を付けて保存"ボックスを開くようになります。 – Ricardo

+0

どういう意味ですか:HTMLドキュメントが読み込まれてHTMLイベントが生成されるのはどこですか?フレームにPDFを挿入します。 PDFはHTMLイベントを生成しません。 –

+0

ええ、私はそれを介してサーバー側で機能間の同期が必要です。私は今儀式をしたくないセッションvars。最悪の場合、それは後に停止するので、10秒のタイマーを追加しました.. – Ricardo

関連する問題