Tôi muốn sử dụng thuộc tính giữ chỗ của HTML5 (Bạn có thể thấy nó trong cation trong bản tin tại Thought Results). Nhưng khi tôi sử dụng các trình duyệt cũ hơn, tất nhiên, chúng không hiển thị bất cứ thứ gì. Tôi có thể sử dụng JavaScript để bắt chước nó, nhưng sau đó, tôi không nên sử dụng nó và nó được thực hiện theo cách cũ. Làm thế nào tôi có thể có cả thuộc tính giữ chỗ HTML5 và đồng thời mô phỏng nó cho các trình duyệt cũ hơn?cách sử dụng thuộc tính giữ chỗ HTML5 với tính tương thích ngược?
Trả lời
Bạn có thể phát hiện nếu một trình duyệt hỗ trợ các thuộc tính:
http://diveintohtml5.info/detect.html#input-placeholder
function supports_input_placeholder() {
var i = document.createElement('input');
return 'placeholder' in i;
}
Nếu có, không làm gì cả. Nếu không, bạn có thể sử dụng JS để lấy giá trị giữ chỗ và chèn nó vào trường như bạn thấy phù hợp (có thể là giá trị mặc định) và sau đó thêm các tương tác thích hợp để mô phỏng hành vi giữ chỗ HTML5.
@marcgg đã viết một plugin trình giữ chỗ JQuery tuyệt vời về cơ bản sao chép chức năng trình giữ chỗ cho các trình duyệt không hỗ trợ nó.
https://github.com/marcgg/Simple-Placeholder
Tôi đã tìm kiếm thông qua rất nhiều các plugin giữ chỗ trước khi quyết định này và nó hoạt động tốt cho đến nay. Nguyên tìm thấy nó trong đối phó với câu hỏi tương tự này:
tôi khuyên bạn nên sử dụng Modernizr để phát hiện tính năng này.
if (Modernizr.input.placeholder) {
// your placeholder text should already be visible!
} else {
// no placeholder support :(
// fall back to a scripted solution
}
Nếu bạn không muốn sử dụng thư viện này, bạn có thể sử dụng mã sau đây.
function supports_input_placeholder() {
var i = document.createElement('input');
return 'placeholder' in i;
}
Về dự phòng hỗ trợ, nếu bạn đang sử dụng jQuery bạn có thể sử dụng Simple Placeholder, trong đó có nguồn gốc của nó ở đây tại StackOverflow.
- 1. Loại đầu vào HTML5 = số và thuộc tính giữ chỗ
- 2. GWT SuggestBox có thuộc tính giữ chỗ
- 3. Sử dụng các tính năng iOS 5 mà không vi phạm tính tương thích ngược
- 4. Thuộc tính trình giữ chỗ HTML5 trên Textarea qua jQuery trong IE10
- 5. Tải Trình giữ chỗ lồng nhau từ Tệp thuộc tính với Spring
- 6. Ghi đè thuộc tính với loại tương thích khác nhau
- 7. Hộp thuộc tính CSS-phản ánh tính tương thích?
- 8. Làm cho các thuộc tính không tương thích với nhau?
- 9. BackupAgent tương thích ngược
- 10. HTML5 như trình giữ chỗ
- 11. JDK 1.7 phá vỡ tính tương thích ngược? (generics)
- 12. Kiểm tra tính tương thích của trình duyệt đối với hỗ trợ API Lịch sử HTML5?
- 13. Deserialization tương thích ngược
- 14. Phần giữ chỗ thuộc tính mùa xuân với chuỗi ghép nối
- 15. Cách sử dụng thuộc tính hệ thống để thay thế trình giữ chỗ trong tệp Typesafe Config?
- 16. Truy cập có lập trình vào các thuộc tính được tạo bởi trình giữ chỗ thuộc tính
- 17. Giá trị CSS sử dụng thuộc tính dữ liệu HTML5
- 18. Cách kiểm tra xem trình duyệt có hỗ trợ thuộc tính giữ chỗ gốc không?
- 19. Sử dụng Knockout.js cách liên kết thuộc tính Ngày với bộ chọn ngày HTML5?
- 20. Thêm thuộc tính giữ chỗ HTML5 vào mùa xuân 3.0 các yếu tố đầu vào biểu mẫu
- 21. Tại sao Mage.exe không tạo thuộc tính tương thích?
- 22. Cách tạo kiểu thuộc tính giữ chỗ trên tất cả các trình duyệt?
- 23. WPF tương đương với thuộc tính AccesibleName
- 24. Tại sao UITextview không có thuộc tính giữ chỗ như UITextField
- 25. HTML5: Cách sử dụng thuộc tính "bắt buộc" với trường nhập "radio"
- 26. Cách xóa thuộc tính data- * bằng cách sử dụng tập dữ liệu HTML5
- 27. FxCop - Sử dụng các thuộc tính khi thích hợp
- 28. Thuộc tính FXML tương đương với ChangeListener?
- 29. Làm cách nào để duy trì tính tương thích ngược trong khi sử dụng API Android Cấp 15?
- 30. Thuộc tính trình giữ chỗ không được hỗ trợ trong IE. Bất kỳ đề xuất?
Điều này đã hiệu quả. Tôi chỉ không hiểu được 'giữ chỗ 'trả về' trong phần i;'. Những gì nó về mặt kỹ thuật làm gì? Điều đó nghĩa là gì? –
Toán tử 'in' kiểm tra nếu một đối tượng (trong trường hợp này là một đối tượng' HTMLInputElement') có một thuộc tính đã cho. Vì các trình duyệt thực hiện thuộc tính 'placeholder' cũng thêm thuộc tính' placeholder' vào giao diện 'HTMLInputElement', đây là một thử nghiệm hiệu quả hỗ trợ cho' placeholder'. – Domenic
@Diogo chỉnh sửa của bạn là câu trả lời hoàn toàn mới. Thay vì chỉnh sửa câu trả lời này, hãy tạo một câu trả lời mới. –