2010-11-26 62 views
0

load事件後,我下載一個PDF作爲附加到iframe中不被觸發。有任何想法嗎?的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形式。服務器必須保持AJAX請求處於待處理狀態,直到PDF已發送到客戶端,然後它應該回復AJAX請求。這會在您傳送PDF時給您一個指示。雖然這並不完美。

+0

沒有PDF閱讀器。 IM提交表單和獲取內容類型= PDF格式的響應,從而啓動瀏覽器,打開「另存爲」對話框 – Ricardo 2010-11-26 13:28:10