[英]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.