繁体   English   中英

Jquery 文件上传在 IE 中不起作用

[英]Jquery file upload not working in IE

我制作了一个简单的插件,用于使用隐藏的 iframe 上传图像。 本质上,它用链接替换文件对话框,单击该链接会触发文件对话框,并在选择文件后自动上传。

这在 Chrome、Safari 和 Firefox 中效果很好。 不幸的是,包括 9 在内的所有 IE 版本都拒绝提交文件。 文件对话框显示得很好,如果我提醒它显示所选文件的值,但提交事件显然不会触发。 如果我 select 带有实际文件对话框的文件,那么它会按预期工作,甚至在不点击提交按钮或任何东西的情况下发送文件。

包括的只是做事的相关代码,显然还有 jQuery 插件等的代码。

                   var self = this;

        var randId = Math.floor(Math.random()*1001);

        var iframeHTML = '<iframe id="iframe'+randId+'" name="iframe'+randId+'" style="visibility:hidden;height:1px;width:1px;"></iframe>';
        var formHTML = '<form method="post" enctype="multipart/form-data" encoding="multipart/form-data" action="'+settings.action+'" target="iframe'+randId+'" id="form'+randId+'" >';
        var inputHTML = '<input type="file" name="upload" id="input'+randId+'"><input type="submit" id="submit'+randId+'" value="Submit" />';

        $(this).append(iframeHTML+formHTML+inputHTML+'</form>');
        $('input#input'+randId).change(function() {
            if($(this).val() != '') {
                if(settings.spinner != '') {
                    $(settings.spinner).show('fade');
                }
            }
        $('form#form'+randId).submit();
        });

        $(settings.activator).click(function(e) {
            e.preventDefault();
            $('input#input'+randId).trigger('click');
        });     

settings.activator 是用于打开文件对话框的链接。

我需要一些特定于 IE 的东西才能工作吗? 我知道这应该是可能的,因为其他脚本可以做到,但我不太热衷于使用它们,因为对于我的需要,它们中的大多数都过于庞大且功能丰富。 我也不想使用任何基于 Flash 的解决方案。

编辑:目前我只是通过在 IE 中显示文件输入框并让适当的浏览器执行上述操作来解决问题。 我仍然想知道除了 IE 的“链接顶部的不透明隐藏输入框”之外是否还有实际的解决方案。

我记得看到 IE7 忽略了以隐藏 iframe 为目标的表单提交。 尝试将 iframe 移出视图而不是实际隐藏它:

.iframe_hidden {
    width: 0;
    height: 0;
    position: relative;
    left: -9999px;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM