2011-11-26 34 views
14

Nếu tôi CHỈ cần trình duyệt cũ hơn để nhận dạng thẻ HTML5, tôi nên sử dụng thẻ nào, Modernizr hoặc HTML5 shiv phổ biến? Ngoài ra, nếu tôi không cần phải tạo kiểu cho các thẻ HTML5 này, tôi có cần các trình duyệt để nhận ra chúng không? Hoặc là nó chỉ cần thiết khi thêm CSS vào các thẻ này?Modernizr vs HTML shiv

Cảm ơn!

+4

Bạn chỉ cần HTML5 shiv để thêm kiểu vào thẻ html5 thông qua CSS. Ngoài ra modernizr bao gồm HTML5 shiv vì vậy nó là một superset – Raynos

+4

Tôi sẽ thêm Modernizr là nhiều hơn để phát hiện HTML5 ** tính năng ** (như định dạng âm thanh, quy tắc phong cách css, lưu trữ địa phương ...) và không hỗ trợ thẻ HTML5 –

Trả lời

16

html5shiv về cơ bản cho phép IE nhận dạng và tạo kiểu cho các phần tử HTML5, trong khi Modernizr cung cấp tính năng phát hiện tính năng cộng được hỗ trợ bởi một broswer.

Vì vậy, để trả lời câu hỏi của bạn HTML5 shiv phải đủ để nhận dạng thẻ HTML5 trong IE. (lưu ý tôi nói IE ở đây vì đó là mục tiêu html5shiv, không chắc chắn ý bạn là gì khi bạn nói các trình duyệt cũ hơn)

Đối với phần thứ hai, ngay cả khi bạn không muốn tạo kiểu cho thẻ HTML5, tôi sẽ tư vấn để sử dụng shiv vì trình duyệt có thể hiển thị chúng không chính xác hoặc hoàn toàn không an toàn.

+0

Tuyệt vời, tôi đã tự hỏi nếu shiv là cần thiết ngay cả khi tôi đã không theo kiểu các thẻ. Quá tệ nó chỉ hoạt động với IE (khi tôi nói các trình duyệt cũ hơn, tôi có nghĩa là Firefox 1 hoặc 2, hoặc bất kỳ phiên bản Chrome/Opera nào không hỗ trợ HTML5) – federicot

+0

Không phổ biến lắm khi tìm ai đó sử dụng FF1 những ngày này;) – omarello

+0

Bạn sai theo những gì tôi đọc trong [Wikipedia] (http://en.wikipedia.org/wiki/Modernizr#What_Modernizr_doesn.27t_do). – Shimmy

11

HTML5 Shiv nhỏ hơn và trừ khi bạn cần một số chức năng phát hiện của Modernizr, hãy sử dụng shiv.

Kích thước tệp là rất quan trọng vì nó luôn nằm trong phần đầu của tài liệu html và chặn tải xuống các tài nguyên bổ sung cho đến khi được thực thi đầy đủ.

Vì nó chỉ là cần thiết cho các trình duyệt cũ, tôi sử dụng đoạn mã sau:

<!--[if lt IE 9]> 
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script> 
<![endif]--> 

Bạn có thể loại bỏ các thẻ html bạn không sử dụng, nhưng sau đó bạn sẽ không thể sử dụng các tập tin lưu trữ tại Google.

+0

những gì _detection_ này đang cung cấp cho tôi? Tôi chỉ viết html và Js. và giả sử áp dụng kiểu cho tất cả các phần tử (bao gồm cả các phần tử html5), vậy bạn có ý nghĩa gì khi "phát hiện"? bạn có thể vui lòng cung cấp ví dụ? –

1

Bạn cũng có thể sử dụng Modernizr để tải một tệp cụ thể nếu trình duyệt hỗ trợ các tính năng CSS hoặc HTML5 cụ thể.

Hãy nói nếu trình duyệt không hỗ trợ 'vải' như yếu tố HTML5 và 'fontface' là tài sản CSS3

Modernizr.load({ 
test: Modernizr.fontface && Modernizr.canvas, // Test if the browser supports it or not 
yep : '/path-to/html5-css3-attributes.css', // If browser supports it, load this file 
nope: '/path-to/old-css-attributes.css' // If NOT, load this instead 
}); 

Bạn có thể sử dụng .js cũng trong tình trạng đường dẫn tập tin của bạn.

Các vấn đề liên quan