在jquery中没有触发iframe加载事件

时间:2010-11-26 12:41:39

标签: jquery events iframe

我下载pdf作为附加到iframe后,没有触发加载事件。任何想法?

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 (/*@cc_on!@*/false) { // check for Internet Explorer
        document.onfocusout = onBlur;
    } else {
        window.onblur = onBlur;
    }

1 个答案:

答案 0 :(得分:0)

我的示例中没有看到任何PDF加载代码,但我的猜测是框架中运行的PDF查看器不是浏览器,因此它不支持标准HTML事件。

发布另一个问题,询问实现需要什么。然后我们可以帮忙。

[编辑]我的意思是:在哪里加载了可以生成HTML事件的HTML文档?你把PDF放在框架中; PDF不会生成HTML事件。

但解决方案可能是发送两个请求:首先是AJAX请求(在后台运行),然后是POST表单。服务器必须保持AJAX请求未决,直到PDF被发送到客户端,然后它应该回复AJAX请求。这将为您提供PDF传输时的指示。但它并不完美。