代码之家  ›  专栏  ›  技术社区  ›  cweston Given

防止iframe postback对父级调用jquery“ready”函数

  •  0
  • cweston Given  · 技术社区  · 15 年前

    我在jquery选项卡布局中有一个iframe。我使用iframe上传图像,模拟Ajax文件上传。似乎每当我的iframe回发时,它都会导致父页的$(document)。准备好执行,重新设置我定位的当前选项卡。

    关于如何防止这种情况有什么想法吗?

        function uploadDone() {
    
        var data = eval("("+ $('#upload_target').contents().find('body').html() +")");
        if(data.success) {
           $('#upload_summary').append("<img src='" + data.full_path + "' />");
           $('#upload_summary').append("<br />Size: " + data.file_size + " KB");
        }
        else if(data.failure) { //Upload failed - show user the reason.
            alert("Upload Failed: " + data.failure);
        }
    }
    
    $(document).ready(function() {
    
        $('#image_uploader').submit(function() {
    
            if($.browser.safari || $.browser.opera) {
    
                $('#upload_target').load(function(){
                    setTimeout(uploadDone, 0);
                });
    
                var iframe = document.getElementById('upload_target');
                var iSource = iframe.src;
                iframe.src = '';
                iframe.src = iSource;
    
            } else {
    
                $('#upload_target').load(uploadDone);
            }
        });
    
    });
    
    1 回复  |  直到 15 年前
        1
  •  1
  •   o.k.w    15 年前

    标记是有意义的(正如解决方案Yogi提到的那样)。如果父框架中的document.ready只需要执行一次,请将全局标志设置为一个值,您可以在再次激发时检查该值。

    另一种方法是在执行document.ready之后解除绑定。 例如。 $(document).unbind('ready')