2010-11-26 67 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