我有一個關於<input type=file>
HTML元素的問題 - 具體來說,爲什麼所有跡象都指向Windows Phone 8(IE 10 Mobile)支持,但它確實沒有工作。JavaScript中的本地文件支持檢測 - Windows Phone 8錯誤
我一直在做一個照片上傳器項目,並在Javascript開發中,我有檢查File API支持的邏輯,所以我知道我是否可以支持本地文件選擇。令人驚訝的是,我所使用的代碼在Windows Phone 8上返回了true
的值。這應該不是問題,但<input type=file>
元素並不真正支持WP 8(如Windows博客article about IE 10 for Mobile中所述)。 WP 8的結果是,如果頁面上有一個<input type=file>
元素,它顯示得很好,但點擊「瀏覽」按鈕時沒有任何反應。
我的JS代碼來檢查文件的API支持:
function checkLocalFileSupport() {
if (window.File && window.FileReader && window.FileList && window.Blob) {
return true;
}
return false;
}
我希望有人能闡明如何更好地檢查並確認本地文件的選擇可在特定設備上的一些光/瀏覽器。正如我所說,我目前的解決方案在WP 8上返回true
。我一直在嘗試各種不同的方法來查看<input type=file>
是否啓用(以下片段),但所有其他解決方案仍然返回WP 8的true
。
一個警告是這樣的:我真的希望代碼是設備不可知的。因此,我不想嗅探瀏覽器用戶代理。在我看來,用戶代理嗅探是我不想實現的後備。
這裏有一些解決方案,我發現和嘗試過,但仍然在WP 8返回true
:
引用的輸入元素上disabled
屬性:
function isInputTypeFileImplemented() {
var elem = document.createElement("input");
elem.type = "file";
if (elem.disabled) return false;
try {
elem.value = "Test"; // Throws error if type=file is implemented
return elem.value != "Test";
} catch(e) {
return elem.type == "file";
}
}
使用jquery.support :
var support = (function(undefined) {
return $("<input type='file'>") // create test element
.get(0) // get native element
.files !== undefined; // check whether files property is not undefined
})();
希望有人可以幫助揭示如何準確地y得到WP 8爲本地文件支持返回一個false
值。
在此先感謝!