有沒有用javascript/jquery/crazy-css-hack來檢測用戶瀏覽器是否支持呈現功能<input type="file" />
文件上傳元素的方法?例如,iOS上的safari瀏覽器不會呈現該元素,而是希望向用戶顯示一條消息,表明該功能不受支持。我知道我可以檢查用戶代理並檢查它是否是iphone/ipad /等,但我不知道其他瀏覽器做了什麼或不支持它,或將來還是不會支持它。檢測HTML文件輸入元素的瀏覽器支持
7
A
回答
5
Galambalazs的回答指出了我僅適用於iOS的正確方向。最後我用這樣的:
function supportsFileInput() {
var dummy = document.createElement("input");
dummy.setAttribute("type", "file");
return dummy.disabled === false;
}
然而,它並不適用於大多數Android設備的工作,因爲這個函數總是返回true,但呈現按鈕文本「上傳已禁用」。
1
您可以編寫一個函數來做到僞測試:
function supportInputType(type) {
var dummy = document.createElement("input");
dummy.setAttribute("type", type);
return dummy.type !== "text";
}
更重要的是,如果你想只執行一次:
var SUPPORT_INPUT_FILE = supportInputType("file");
然後你可以使用這個「常數」在你所有的代碼中。
測試的工作方式:首先創建一個虛擬元素。它將有默認的type = "text"
。接下來,您嘗試將其設置爲file
。如果瀏覽器不支持這種類型,它將保持text
。
玩得開心!
1
iOS將文件輸入元素渲染爲「禁用」。因此,您可以測試是否有禁用的輸入字段。我用jQuery來做到這一點。
jQuery(function($) {
$(this).find('[type=file]').each(function() {
if ($(this).attr('disabled')) {
// do sth.
}
})
});
相關問題
- 1. 檢測瀏覽器文件輸入支持
- 2. 如何檢測「圖片」元素的瀏覽器支持
- 3. 如何檢查瀏覽器是否支持HTML元素
- 4. 檢測瀏覽器對RFC5987的支持
- 5. 檢測瀏覽器對SVGFragmentIdentifier的支持
- 6. 檢測瀏覽器與Modernizr支持css3
- 7. 如何檢測瀏覽器支持requestFullscreen
- 8. 檢測SSL瀏覽器支持
- 9. CSS檢測瀏覽器支持javascript
- 10. 爲jQuery Mobile支持檢測瀏覽器
- 11. 檢測瀏覽器是否支持jQueryMobile
- 12. 檢測瀏覽器是否支持vbscript?
- 13. 如何檢測瀏覽器是否支持webkit瀏覽器?
- 14. 檢測短信:瀏覽器支持瀏覽器
- 15. 檢測瀏覽器對HTML媒體捕獲的支持
- 16. 跨瀏覽器日期輸入支持
- 17. 所有瀏覽器是否支持選取框HTML元素?
- 18. 如何檢測瀏覽器是否支持關注禁用的元素?
- 19. 是否有任何瀏覽器支持輸入元素的表單屬性?
- 20. 檢測瀏覽器/設備是否支持雙擊事件
- 21. 如何檢測瀏覽器是否支持gesturestart事件?
- 22. 瀏覽器支持
- 23. 使用jQuery檢測瀏覽器的CSS選擇器支持
- 24. 文本輸入佔位符和跨瀏覽器支持
- 25. Windows Phone 7瀏覽器支持HTML 5
- 26. 什麼瀏覽器支持HTML 5/CSS3
- 27. 預先檢查瀏覽器的媒體(視頻文件)支持
- 28. 爲什麼HTML輸入元素被瀏覽器調整大小?
- 29. SWT測試是否支持瀏覽器
- 30. 瀏覽器支持WebDriver還是WebDriver支持瀏覽器
這是一個好主意,但在iPhone上測試返回true,即使它實際上不支持渲染文件輸入。 – bkaid 2010-11-08 21:25:05