Tôi có thể sử dụng thẻ HTML5 nào mà không cần lo lắng về khả năng tương thích của trình duyệt?


93

Tôi đang xây dựng một ứng dụng web để sử dụng trên PC. Những thẻ HTML5 nào cần tránh xa để ngăn chặn các vấn đề tương thích với các Trình duyệt như IE8 trở lên?

Lưu ý: Hầu hết các câu hỏi dành cho lứa tuổi 1-3 về chủ đề này.


48
Kiểm tra caniuse.comhtml5please.com để biết thông tin cập nhật về khả năng tương thích của trình duyệt.
rink.attendant. 6

@deceze bất kỳ liên kết nào để biết thêm về miếng chêm?
Swagg

4
HTML5 Boilerplate là một nguồn lực tốt
Michael Peterson

47
IMHO bạn không thể sử dụng bất cứ điều gì trong việc phát triển web mà không cần lo lắng về khả năng tương thích trình duyệt ...
Uooo

2
Xem Ba cấp độ sử dụng HTML5 . Công cụ cấp 1 có thể được sử dụng mà không có vấn đề gì. Các tính năng cấp độ 2 bị suy giảm một cách duyên dáng. Các tính năng cấp 3 yêu cầu một polyfill nếu vấn đề hỗ trợ cho các trình duyệt cũ hơn.
Mathias Bynens

Câu trả lời:


100

Bạn đã hỏi những thẻ HTML5 nào cần tránh xa.

Chà Một số thẻ từ HTML5 theo hiểu biết của tôi được tạo ra vì lý do ngữ nghĩa. như sau đây chẳng hạn.

<article> <section> <aside> <nav> <header> <footer> ..ect

Chúng gần như tốt để làm việc và chỉ cần một chút CSS, ví dụ. display: block;để hoạt động bình thường trong hầu hết các trình duyệt, mặc dù trong các trình duyệt cũ hơn. Internet Explorer bạn bắt buộc phải tạo một phần tử trong Javascript để nó tương thích.

Đây là một ví dụ.

document.createElement('article');

Sẽ thiết lập <article>phần tử để sử dụng trong Internet Explorer cũ hơn.

Đối với các thẻ HTML5 nâng cao hơn yêu cầu chức năng Javascript để hoạt động như sau.

<audio> <video> <source> <track> <embed> And most importantly <canvas> 

Các yếu tố này khó hỗ trợ / shiv hơn trong các trình duyệt cũ hơn. Mặc dù tôi đã bao gồm một liên kết đến các polyfills trình duyệt ở phía dưới, mặc dù tôi chưa tự mình điều tra chúng.

Vì vậy, tôi sẽ nói rằng bất kỳ phần tử nào không yêu cầu chức năng Javascript đều hoàn toàn tốt để sử dụng với một chút mã hỗ trợ trình duyệt chéo.

Nếu nhắm mục tiêu của bạn > IE8 thì bạn sẽ ổn nếu bạn sử dụng shiv.

Tôi gọi các trình duyệt cũ hơn là gì? <IE9

Hỗ trợ trình duyệt cho các thẻ HTML5 ngày nay.

<section>, <article>, <aside>, <header>, <footer>, 
<nav>, <figure>, <figcaption>, <time>, <mark>

Không được hỗ trợ bởi Internet Explorer dưới 8 nhưng có thể được sửa như thế này.

CSS:

section, article, aside, header, footer, nav, figure, figcaption{
   display: block;
}
time, mark { 
    display: inline-block;
}

Javascript:

var elements = ['section', 'article', 'aside', 'header', 'footer', 'nav', 'figure', 'figcaption', 'time', 'mark'];
for( var i = 0; i < elements.length; i++ ) {
    document.createElement(elements[i]);
}

<audio> <video> <canvas>không được hỗ trợ trong <IE 9

Phần <embed>tử có hỗ trợ một phần trong > IE8


Bạn cũng nên xem xét thẻ này.

 <meta http-equiv="X-UA-Compatible" content="IE=edge">

metaThẻ này yêu cầu Internet Explorer hiển thị trang ở chế độ IE cao nhất hiện có, thay vì chuyển sang chế độ tương thích và hiển thị trang như IE7 hoặc 8 sẽ làm. Thông tin thêm về điều đó Tại đây .


Liên kết trình trợ giúp HTML5


Để bắt đầu khởi động, bạn có thể xem HTML5 BoilerPlate

Để biết các bảng hỗ trợ tính tương thích của trình duyệt, bạn có thể xem - http://caniuse.com/

HTML5 Shiv - https://github.com/afarkas/html5shiv

Danh sách các Polyfills HTML5 - https: //github.com/Modernizr/Modernizr/wiki / ...

Cập nhật

Như đã đề cập trong một bình luận

Hãy cẩn thận với thẻ meta X-UA-Tương thích. Nếu bạn sử dụng thứ gì đó như bảng soạn sẵn html5 có các nhận xét có điều kiện xung quanh phần tử (điều này cũng xảy ra với html5 doctype IIRC), bạn có thể gặp sự cố với IE9 buộc chính nó vào chế độ tiêu chuẩn IE7 ngay cả với thẻ. IE lại đình công

Bạn có thể muốn xem xét điều này, tôi không có gì để sao lưu điều này vào lúc này.


Ngoài ra, nếu bạn có thể chỉ định, IE cũ hơn là gì? 6,7,8?
Swagg

4
Nói chung Cũ hơn IE là <IE9
iConnor

Hãy cẩn thận với thẻ meta X-UA-Tương thích. Nếu bạn sử dụng thứ gì đó như bảng soạn sẵn html5 có các nhận xét có điều kiện xung quanh <html>phần tử (điều này cũng xảy ra với html5 doctype IIRC), bạn có thể gặp sự cố với IE9 buộc chính nó vào chế độ tiêu chuẩn IE7 ngay cả với thẻ. IE lại đình công.
cheezone

Cảm ơn vì thông tin, bất kỳ bài đăng blog nào hoặc một số thông tin mà tôi có thể thêm vào câu trả lời liên quan đến vấn đề đó sẽ rất tốt :)
iConnor

12

Nói chung, có những vấn đề.

Tôi đã được thông báo rằng câu hỏi của bạn là từ để hỏi về các thẻ HTML 5 nhưng cũng rất hữu ích khi xem xét các tính năng mới dựa trên bất kỳ Javascript nào bạn có thể tìm thấy hoặc viết.

Trên thực tế, phương pháp được khuyến nghị là kiểm tra sự tồn tại của tính năng hơn là một trình duyệt cụ thể. Tập lệnh Modernizr có thể hữu ích trong vấn đề này, nhưng cũng có báo cáo về các tính năng không thể phát hiện được trong HTML5 .

Một số tính năng như local storagequay lại IE8.

Những người khác, như FileReader, yêu cầu IE10 / Firefox21 / Chrome27

Để biết thông tin hiện tại, hãy thử http://caniuse.com


1
Tôi phải lưu ý rằng localStorage & fileReader không phải là Thẻ HTML, OP đã hỏi những thẻ HTML5 có vấn đề gì về tính tương thích.
iConnor

Ồ, vâng. Có một danh sách lớn các thẻ ngữ nghĩa này đang được đẩy vào HTML5 như một cách để làm cho trang của bạn dễ đọc hơn và có lẽ thân thiện với SEO hơn [hoặc có thể không]. Có một số yếu tố đầu vào mới. Tôi cho rằng một số trong số này có thể có vấn đề trong một hoặc nhiều trình duyệt. Tôi sẽ nghĩ caniuse có thể có thông tin rằng ...
Paul

8

Viết HTML 5 như bạn thường làm và sử dụng Shims để đảm bảo khả năng tương thích với các trình duyệt cũ hơn. Bạn chỉ cần cẩn thận với các API Javascript thực sự, bởi vì chúng khó có thể thực hiện được. Nếu bạn đang cố gắng bám vào HTML 4 cơ bản để tương thích, thì việc sử dụng HTML 5 không có ích gì.


7
Tôi sẵn lòng sử dụng <!DOCTYPE html>làm dòng trên cùng thay vì những thứ xấu xa bị nguyền rủa đã đeo bám chúng tôi trong thời gian trước.
Paul

Nếu đó là thứ duy nhất thay đổi giữa tài liệu HTML 4 và "HTML 5" của bạn ... thì vấn đề là gì? :)
dối trá

4

Để so sánh nhanh những thẻ nào có sẵn trong những trình duyệt nào và mức độ hỗ trợ cho mỗi thẻ, html5test.com là một tài nguyên tuyệt vời.


2

Bạn đang tìm kiếm một ma trận khả năng tương thích HTML5

http://en.wikipedia.org/wiki/Comparison_of_layout_engines_(HTML5)


2
Lưu ý: "Tính chính xác thực tế của bài viết này có thể bị xâm phạm do thông tin lỗi thời. Vui lòng cập nhật bài viết này để phản ánh các sự kiện gần đây hoặc thông tin mới có sẵn. (Tháng 3 năm 2013)"
gersande

1
Vâng, điều đó có thể đúng nhưng nói chung google html5 compatabilitytôi chắc rằng có rất nhiều nguồn.
bradgonesurfing

2

Ngoài ra, để có khả năng tương thích nhiều trình duyệt tốt nhất, tôi khuyên bạn nên sử dụng reset.css này được tạo bởi Eric Meyer. http://meyerweb.com/eric/tools/css/reset/ Điều này làm cho các phần tử khác biệt giữa trình duyệt này với trình duyệt khác, hoạt động giống nhau trong tất cả các trình duyệt.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.