Có cách nào với javascript/jquery/crazy-css-hack để phát hiện xem trình duyệt của người dùng có hỗ trợ hiển thị phần tử tải lên tệp <input type="file" />
chức năng không? Ví dụ: trình duyệt Safari trên iOS sẽ không hiển thị phần tử và thay vào đó tôi muốn hiển thị thông báo cho người dùng rằng chức năng không được hỗ trợ. Tôi biết tôi có thể kiểm tra các đại lý người dùng và kiểm tra xem nó là một iphone/ipad/etc nhưng tôi không biết những gì các trình duyệt khác làm hoặc không hỗ trợ nó hoặc sẽ hoặc sẽ không hỗ trợ nó trong tương lai.Phát hiện hỗ trợ trình duyệt của phần tử nhập tệp html
Trả lời
Câu trả lời của Galambalaz chỉ cho tôi đúng hướng cho iOS. Tôi đã sử dụng điều này:
function supportsFileInput() {
var dummy = document.createElement("input");
dummy.setAttribute("type", "file");
return dummy.disabled === false;
}
Tuy nhiên, nó không hoạt động cho hầu hết các thiết bị Android vì chức năng này luôn trả về true nhưng hiển thị nút có nội dung "Tải lên bị tắt".
Bạn có thể viết một hàm để làm giả thử nghiệm:
function supportInputType(type) {
var dummy = document.createElement("input");
dummy.setAttribute("type", type);
return dummy.type !== "text";
}
Hơn thế nữa nếu bạn muốn thực hiện một lần duy nhất:
var SUPPORT_INPUT_FILE = supportInputType("file");
Sau đó, bạn có thể sử dụng "liên tục" trong tất cả các mã của bạn.
Cách kiểm tra hoạt động: Đầu tiên nó tạo thành phần tử giả. Nó sẽ có mặc định type = "text"
. Tiếp theo, bạn thử đặt nó thành file
. Trong trường hợp trình duyệt không hỗ trợ loại này, trình duyệt sẽ vẫn giữ nguyên là text
.
Hãy vui vẻ!
iOS hiển thị phần tử nhập tệp là "bị tắt". Vì vậy, bạn có thể kiểm tra nếu có trường nhập bị vô hiệu hóa. Tôi đã sử dụng jQuery để làm như vậy.
jQuery(function($) {
$(this).find('[type=file]').each(function() {
if ($(this).attr('disabled')) {
// do sth.
}
})
});
- 1. Phát hiện hỗ trợ trình duyệt cho HTML Media Capture
- 2. Trình duyệt nào hỗ trợ HTML SHORTTAG?
- 3. JavaScript có thể phát hiện xem trình duyệt của người dùng có hỗ trợ gzip không?
- 4. Phát hiện xem trình duyệt di động có hỗ trợ tràn hay không: di chuyển
- 5. Các phần tử Html được hỗ trợ bởi Excel
- 6. .SVG Hỗ trợ trình duyệt
- 7. Hỗ trợ trình duyệt Ember.js?
- 8. Trình duyệt nào hỗ trợ HTML 5/CSS3
- 9. Hỗ trợ HTML 5 trong trình duyệt Windows Phone 7
- 10. Hỗ trợ trình duyệt E4X
- 11. Trình duyệt nào hỗ trợ cookie HttpOnly?
- 12. Có bất kỳ trình duyệt nào hỗ trợ CSS3 phần tử giả "điểm đánh dấu" không?
- 13. Chỉ hiển thị tệp XML trong phần tử nhập tệp HTML
- 14. Phát hiện phần cứng chậm/trình duyệt chậm với JavaScript
- 15. Tỷ lệ phần trăm thị phần nào mà trình duyệt cần để hỗ trợ của bạn?
- 16. Trình duyệt web nào hỗ trợ các trình duyệt web?
- 17. Cách phát hiện xem trình duyệt có hỗ trợ flash không?
- 18. Tại sao HTML 5 vẫn có hỗ trợ cho các phần tử Trình diễn?
- 19. Làm thế nào để bạn phát hiện hỗ trợ cho VML hoặc SVG trong trình duyệt
- 20. Làm cách nào để phát hiện xem trình duyệt có hỗ trợ MJPEG không?
- 21. Phát hiện xem trình duyệt có hỗ trợ vị trí không:
- 22. Phát hiện hình nền và hỗ trợ màu nền khi in từ trình duyệt
- 23. Phát hiện hỗ trợ trình duyệt để liên lạc giữa các cửa sổ
- 24. Phát hiện Hỗ trợ trình duyệt để hiển thị: inline-block
- 25. Hỗ trợ chéo trình duyệt của `page-break-inside: tránh;`
- 26. Hỗ trợ Xpath trong trình duyệt của tôi?
- 27. Trình duyệt nào chỉ hỗ trợ SSLv2?
- 28. Trình duyệt nào hỗ trợ Xpath 2.0?
- 29. Trình duyệt của tôi không hỗ trợ "document.getElementById()"!
- 30. Trình duyệt nào hỗ trợ `overflow-y`?
Đây là một ý tưởng hay nhưng thử nghiệm trên iPhone trả về true mặc dù nó không thực sự hỗ trợ hiển thị đầu vào tệp. – bkaid