Bạn có cần đóng thẻ meta và liên kết trong HTML không?


132

Tôi chỉ đọc HTML của ai đó, người không bao giờ đóng thẻ meta và thẻ liên kết trong phần đầu HTML. Các mã làm việc tốt; đang đóng các thẻ này là tùy chọn?

Tôi nghĩ rằng nó sẽ không đúng nếu thẻ không được đóng.

Câu trả lời:


166

Một thẻ phải luôn được đóng lại bằng ký hiệu thẻ gần >(nếu chúng ta bỏ qua quy tắc SGML chắc chắn rằng danh nghĩa áp dụng trong phi XHTML HTML nhưng không bao giờ được thực hiện trong các trình duyệt).

Những gì bạn muốn hỏi là liệu các yếu tố cần phải được đóng bởi các thẻ kết thúc. Câu trả lời là HTML không phải XHTML (bao gồm HTML5 trong tuần tự hóa HTML), không có thẻ kết thúc nào được yêu cầu hoặc cho phép metalinkcác yếu tố. Tuy nhiên, trên thực tế, các trình duyệt chỉ bỏ qua các thẻ kết thúc rõ ràng cho chúng, cũng như việc sùng bái hàng hóa /trước đây >, nếu bạn sử dụng chúng. Và HTML5 cũng biến điều này thành một quy tắc bằng cách chính thức cho phép cả /tuần tự hóa HTML.

Trong XHTML, các quy tắc XML được áp dụng, do đó, mọi phần tử, không có ngoại lệ, phải có cả thẻ bắt đầu và thẻ kết thúc, nhưng cùng một thẻ có thể được sử dụng cho cả hai vai trò nếu nội dung phần tử trống, ví dụ <meta name="foo" content="bar"/>như viết tắt <meta name="foo" content="bar"></meta>. Nếu bạn vi phạm điều này khi phân phát tài liệu có loại nội dung XML (XHTML) cho trình duyệt tuân thủ, thì tài liệu của bạn hoàn toàn không được hiển thị; một thông báo lỗi được hiển thị thay thế.

Khi sử dụng máy chủ XHTML với loại nội dung HTML ( Content-Type: text/html), vì các tài liệu XHTML hầu như luôn có trên web, khi đó các trình duyệt sẽ thực sự áp dụng các quy tắc HTML không phải XHTML.

Để tóm tắt:

  • thông thường, chỉ sử dụng <meta ...>không/
  • nếu bạn thực sự sử dụng XHTML trong bối cảnh thực sự phân tích cú pháp XHTML, hãy chơi theo quy tắc XML (và đảm bảo bạn biết chúng)
  • nếu sếp của bạn bảo bạn viết <meta ... />, hãy làm như vậy; nó không hữu ích, nhưng nó không gây hại (trừ khi bạn cố gắng xác thực, ví dụ như đối với tài liệu HTML 4.01).

3
sử dụng /> gây ra sự cố trong đó google bot không nhận ra thẻ meta robot. lạ thật !!!
DevZer0

13
Tôi thấy thuật ngữ hàng hóa tôn giáo hàng hóa không phù hợp trong bối cảnh này. Một số người đóng các yếu tố đó, đơn giản vì họ đàn áp rằng XHTML đã không thắng thế.
Marcus

6
Cảnh báo trẻ em! "Sùng bái hàng hóa" không được gạch nối trong thực tế thông thường, mà chỉ khi sử dụng toàn bộ cụm từ làm tính từ cho một từ khác (nghĩa là "lập trình sùng bái hàng hóa", "sùng bái hàng hóa /trước >"). Chỉ cần nghĩ rằng tôi sẽ làm rõ để tránh làm rối internet với nhiều nhầm lẫn. </pedant_alert>:)
Aaron Wallentine

1
@ DevZer0 - bạn có chắc chắn dấu gạch chéo là nguyên nhân? Tôi hy vọng Google sẽ linh hoạt với những thứ như vậy.
Simon East

2
Không làm cho HTML của bạn phù hợp với quy tắc XHTML là lý do để bao gồm / trước>?
Kyle Delaney

28

Nó phụ thuộc vào doctype. HTML5 không cần đóng cửa. XHTML nào.

Trong HTML5, các phần tử được gọi là void (các phần tử không thể có nội dung) không cần đóng, vì chúng tự đóng. Nhưng nó vẫn hợp lệ nếu bạn đóng chúng ..

Đọc thêm về nó ở đây: void-yếu tố


4
HTML5 có hai tuần tự hóa và một trong số chúng (tuần tự hóa XHTML) làm cho các thẻ kết thúc là bắt buộc.
Jukka K. Korpela
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.