簡體   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