Xác thực HTML: có đáng không?


52

Những lợi thế và bất lợi (nếu có) của việc đảm bảo rằng tất cả các trang xác thực so với việc có HTML không hợp lệ, tuy nhiên hoạt động trên tất cả các trình duyệt chính?

Ngoài ra, việc có HTML hợp lệ sau khi Javascript thực thi cũng quan trọng không?


5
Điều này không trả lời câu hỏi của bạn nhưng ... đặt một loại tài liệu trên trang của bạn sẽ đưa trình duyệt ở chế độ tiêu chuẩn thay vì chế độ quirks. Tra cứu chế độ quirks để xem ý tôi là gì.
Evan Plaice

1
@Evan Plaice - Không phải bất kỳ DOCTYPE nào . Một số DOCTYPES thực sự kích hoạt các quirks hoặc các chế độ gần như tiêu chuẩn. Thông số HTML5 giải thích điều này chi tiết hơn.
luiscubal

1
@luiscubal Có phải là mới trong HTML 5 vì từ en.wikipedia.org/wiki/Quirks_mode , nó nói "... nếu có một DOCTYPE đầy đủ, trình duyệt sẽ sử dụng chế độ tiêu chuẩn và nếu không có thì trình duyệt sẽ sử dụng chế độ quirks . ".
Evan Plaice

@Evan Plaice Không chắc chắn về các phiên bản HTML trước đây, nhưng HTML5 nêu cụ thể những việc cần làm với DOCTYPES cổ đại: xem whatwg.org/specs/web-apps/civerse-work/multipage/ tựa
luiscubal

1
@Evan Plaice Nói cách khác, "DTD HTML 2.0 Cấp 1" kích hoạt chế độ quirks.
luiscubal

Câu trả lời:


42

Tôi nghĩ rằng nó chắc chắn đáng làm , nhưng bạn không bao giờ nên là nô lệ cho việc xác nhận - đó là trò chơi của một kẻ ngốc.

http: //www.codinghorror.com/blog/2009/03/html-validation-does-it-matter.html

  1. Xác thực HTML của bạn. Biết ý nghĩa của việc đánh dấu HTML hợp lệ. Hiểu các dụng cụ. Nhiều thông tin luôn luôn tốt hơn thông tin ít hơn. Tại sao bay mù?

  2. Không ai quan tâm nếu HTML của bạn hợp lệ. Ngoại trừ bạn. Nếu bạn muốn. Đừng nghĩ một chút rằng việc tạo HTML hoàn toàn hợp lệ quan trọng hơn việc chạy trang web của bạn, cung cấp các tính năng khiến người dùng của bạn thích thú hoặc hoàn thành công việc.


3
Tôi phải thứ hai này. Tôi đã thấy rất nhiều vấn đề với các thư viện javascript có thể đổ lỗi cho HTML không hợp lệ. Nhiều hình thức lồng nhau và các thẻ đóng bất hợp pháp là những người phạm tội lớn. Giống như Jeff nói đừng trở thành nô lệ, nhưng đừng phàn nàn khi jQuery không hoạt động vì trang của bạn không hợp lệ HTML (XHTML, HTML 5 hoặc bất cứ điều gì bạn chọn làm tài liệu).
Gareth Farrington

@Jeff Atwood: Tôi không thể đồng ý nhiều hơn khi bạn nói "Không ai quan tâm nếu HTML của bạn hợp lệ. Ngoại trừ bạn." Đáng buồn nhưng sự thật, khách hàng thực sự không quan tâm.
Marco Demaio

@MarcoDemaio Tại sao lại buồn? Là khách hàng và người dùng cuối, tôi quan tâm nhiều hơn đến việc trang web có hoạt động trên tất cả các trình duyệt hay không (hầu hết các tiêu chuẩn không tuân thủ tiêu chuẩn bắt đầu) so với việc nó có xác nhận hay không. HTML hợp lệ thực sự không thành vấn đề. Google, Facebook, Twitter, trang web này, v.v. không có trang web liên quan nào có đánh dấu hợp lệ. Tại sao? Bởi vì HTML hợp lệ không làm gì khác ngoài việc làm phồng trang và tăng chi phí băng thông của bạn.
NullUserException

Điều tương tự cũng xảy ra đối với đánh dấu thụt lề hoàn hảo. Điều này thậm chí còn vô dụng hơn, nó lãng phí 100% băng thông và không có công dụng thực tế nào.
NullUserException

@NullUserException: Tôi nghĩ thật buồn vì tôi phát hiện ra các trang web được xác thực thường hiển thị tốt hơn nhiều trên tất cả các trình duyệt. Xem bình luận của tôi cho câu trả lời của Alan: webmasters.stackexchange.com/a/373/1429 Xác thực một trang web được lưu cho tôi và vẫn tiết kiệm cho tôi một lượng lớn thời gian. Về đánh dấu thụt lề hoàn hảo tôi chưa bao giờ nghe thông số kỹ thuật về nó. Tôi có thể muốn thụt lề bởi 3 khoảng trắng và bạn có thể muốn thụt lề bởi một khoảng trắng.
Marco Demaio

32

Tôi coi HTML hợp lệ là một mục tiêu đáng giá, nhưng không xem đó là mục tiêu tất cả và cuối cùng của việc xây dựng các trang web tốt.

Bí quyết là, đánh dấu của bạn có thể hoàn toàn hợp lệ, nhưng nó có thể không phải là ngữ nghĩa - ví dụ: sử dụng bảng để bố trí hoặc điều hướng. Có sự khác biệt giữa mã hợp lệ và mã ngữ nghĩa.

Một lưu ý khác, nếu bạn sử dụng quảng cáo hoặc tập lệnh bên ngoài, họ có thể chèn đánh dấu của riêng họ để có cơ hội thực sự gây rối với chính bạn.


22

Tôi nghĩ rằng nó đáng giá, vì tôi đã bắt gặp nhiều lỗi đánh dấu và logic bằng cách tìm kiếm xác nhận. Đó là một trong những điều "cần nhưng không đủ". Đánh dấu hợp lệ, như mã biên dịch (hoặc kiểm tra qua JSlint) không có lỗi, cảnh báo và gợi ý, là bước đầu tiên tốt để làm cho đúng.


+1 hoàn toàn đồng ý về điều này. Các trang xác thực giúp tiết kiệm một lượng lớn thời gian chạy sau mã lỗi và các lỗi được thay thế có vẻ rất bí ẩn và chỉ do thẻ HTML lo lắng hoặc không đóng. Ngoài ra, với các công cụ như FF addon Html Trình xác thực [ addons.mozilla.org/en-US/firefox/addon/html-validator/] việc xác thực tất cả các trang của bạn là hoàn toàn chính xác.
Marco Demaio

9

Điểm cộng lớn của HTML hợp lệ là trang của bạn sau đó dễ truy cập hơn vào những thứ khác ngoài "trình duyệt chính". Tất cả các "trình duyệt chính" đều có cách giải quyết vô tận để xử lý tất cả các rác không hợp lệ cư trú trong WWW. Tuy nhiên, việc sử dụng HTML hợp lệ sẽ giúp, ví dụ, nếu ai đó đang sử dụng trình duyệt dành cho người khiếm thị hoặc truy cập các trang của bạn ngoại tuyến, v.v.


8

Bản thân việc xác thực không quá quan trọng, vì một số trình duyệt tuân thủ 100% và thông số kỹ thuật không rõ ràng 100% về cách diễn giải các quy tắc.

Tuy nhiên, HTML hợp lệ đặt bạn vào vị trí tốt hơn để thích nghi và cải thiện trang web của bạn. Khi các tiêu chuẩn di chuyển, chúng thường sẽ di chuyển về phía trước và nếu trang web mới của bạn hợp lệ, thì việc cập nhật để hỗ trợ điều mới nhất sẽ dễ dàng hơn.

Dưới cùng, có giá trị giúp dễ dàng đứng đầu trò chơi và tương thích nhất có thể với đối tượng rộng nhất.


4

Cách tiếp cận tốt nhất là tìm hiểu HTML không hợp lệ nào xấu và HTML không hợp lệ nào không quan trọng.

Ví dụ, việc quên đóng <div>thẻ là rất tệ , vì bố cục của bạn gần như chắc chắn sẽ làm hỏng trong một hoặc nhiều trình duyệt.

Tuy nhiên, sử dụng <br>thay vì <br />trong XHTML không thành vấn đề - tất cả các trình duyệt sẽ diễn giải cả hai như là ngắt dòng mà không gặp vấn đề gì. Sử dụng targetthuộc tính trên các liên kết là không hợp lệ, nhưng trường hợp xấu nhất là trình duyệt không mở liên kết trong một cửa sổ mới.


targetlà hợp lệ trong XHTML chuyển tiếp và chỉ những người bạo dâm sử dụng nghiêm ngặt. Việc bỏ dấu gạch chéo sẽ làm cho trang XML của bạn không hợp lệ, điều này có thể sẽ gây nhầm lẫn cho những người dọn dẹp màn hình. Nếu bạn chọn sử dụng XHTML, ít nhất trang của bạn phải là XML hợp lệ.
Tgr

1
@Tgr: Hài hước, tôi nghĩ những người bạo dâm ưa thích chế độ phi tiêu chuẩn. Ngay cả các loại tài liệu chuyển tiếp cũng có vấn đề của họ (sử dụng chế độ "gần như tiêu chuẩn", v.v.)
DisgruntledGoat

1
Tôi cho rằng Strict là điều cần thiết - tại sao chọn chạy rủi ro mã không dùng được và chế độ quirks. Không có chi phí để sử dụng Strict, ngoài việc nó khuyến khích bạn biết thêm về phiên bản đánh dấu ưa thích của bạn.
CJM

3

Khi chạy trình xác nhận, bạn sẽ cần kiểm tra các lỗi mà nó cung cấp cho bạn trong từng trường hợp cụ thể. Xác nhận có quan trọng không? Đối với tôi, vâng, nó rất quan trọng. Nhưng nó là một yêu cầu? Không.

Những việc như sử dụng cùng một ID nhiều lần (thay vì một lớp), đặt các phần tử cấp khối bên trong các phần tử cấp độ nội tuyến (thường các phần tử này không phù hợp theo cách này về mặt ngữ nghĩa), thiếu các thuộc tính alt trên hình ảnh (khả năng truy cập kém cho người khuyết tật ), đều quan trọng. Những thứ như thuộc tính không xác định trên thẻ KHÔNG quan trọng. Ở tất cả. Các khung Javascript như Dojo hoặc thanh phương tiện truyền thông xã hội Meebo khủng khiếp đó sử dụng các thuộc tính tùy chỉnh làm móc nối và thông số kỹ thuật HTML nói rằng những thứ này được cho phép và bất kỳ thuộc tính không xác định nào sẽ bị bỏ qua. Trình xác nhận không bỏ qua chúng, tuy nhiên, nó ném lỗi. Những lỗi này có thể được bỏ qua.

Khi xác thực, đừng chỉ cho rằng nếu bạn có lỗi thì bạn đã làm sai. Ngữ nghĩa là vô cùng quan trọng, và thực tế là HTML hợp lệ thường không phải là kết quả tự nhiên của việc có ngữ nghĩa phù hợp.


Tôi đồng ý - xác thực trang web của bạn, nhưng trong một số trường hợp, bạn có thể chọn bỏ qua các cảnh báo, miễn là bạn biết tại sao chúng ở đó
Casebash

3

Một lý do để kiểm tra trang web của bạn để tìm HTML hợp lệ là nó đảm bảo rằng các công cụ tìm kiếm sẽ có thể lập chỉ mục đầy đủ và xác định ý nghĩa của các trang của bạn. Nếu họ không thể làm như vậy do HTML không đúng định dạng (mà các trình duyệt chính có thể hoạt động vì lý do lịch sử) thì bạn có khả năng giới hạn thứ hạng công cụ tìm kiếm của bạn.

Cũng có suy đoán rằng trong khi các công cụ tìm kiếm chính làm tốt công việc xử lý HTML không đúng định dạng, họ cũng có thể gán "điểm" chất lượng trang cho tính hợp lệ, ảnh hưởng đến khả năng xếp hạng cao như nội dung của bạn.


2
Google đã tuyên bố một cách cụ thể rằng HTML không hợp lệ không ảnh hưởng đến thứ hạng. Tuy nhiên tôi có thể thấy trường hợp HTML không đúng định dạng đến mức các nội dung trên trang không thể đọc được bởi các con nhện - mặc dù trong trường hợp này gần như chắc chắn rằng các trình duyệt sẽ bắt đầu hiển thị các vấn đề kết xuất.
Không hài lòngGoat

@DisgruntledGoat Bạn nói đúng, đây là tài liệu tham khảo cho điều đó: youtube.com/watch?v=FPBACTS-tyg
JasonBirch

@DisgruntledGoat Rõ ràng ... Bản thân Google chứa đầy HTML không hợp lệ và tôi nhớ họ nói rằng họ thực sự không quan tâm và đó là một điều tốt khi có HTML không hợp lệ nếu điều đó có nghĩa là thời gian tải nhanh hơn.
NullUserException

3

Tôi thực sự không nghĩ nó quan trọng nữa. Tôi từng là nô lệ cho việc xác nhận, bây giờ tôi hiếm khi kiểm tra nó. Có lẽ tôi đã bị kiệt sức vì đảm bảo trang web của mình hợp lệ hoặc có lẽ tôi không quan tâm nữa vì sẽ không có ai khác làm thế. Tôi có thể đảm bảo 99,9% khách truy cập của chúng tôi thậm chí không biết đó là gì cũng như thậm chí quan tâm nếu họ đã làm. Phần mềm trình duyệt trong tương lai có thể, nhưng khi ngày đó đến, tôi sẽ lo lắng về nó.


2

Xác thực là hữu ích vì nó có thể giúp bạn phát hiện ra một số lỗi khó bắt như

<input name=foo value=<?php echo htmlspecialchars($_GET['foo']); ?> />

hoặc hành vi trình duyệt không thể đoán trước (ví dụ: đặt các thành phần khối trong một ađôi khi có thể phá vỡ theo cách xấu trong Firefox).


2

Một điểm chưa ai đề cập là HTML không hợp lệ có thể khiến thời gian kết xuất chậm hơn trong khi trình duyệt đang cố gắng hiểu ý nghĩa của HTML không chuẩn khi hiển thị.


Tôi sẽ downvote này nếu tôi có thể. Tôi rất nghi ngờ điều này có bất kỳ hiệu ứng có thể quan sát được; Tôi sẽ quan tâm nhiều hơn đến việc đánh dấu trang hợp lệ và yêu cầu nhiều thời gian hơn để tải (đặc biệt là trên các kết nối chậm / di động).
NullUserException

@NullUserExceptions: Tôi không nghĩ rằng điểm do BradB đưa ra xứng đáng là -1. Có thể khó chứng minh, nhưng một trình duyệt cần sắp xếp và sửa chữa bên trong một mớ hỗn độn HTML có thể mất nhiều hơn một trang HTML hợp lệ được định dạng tốt mà không có lỗi trong đó. Tại sao bạn không cung cấp câu trả lời cho câu hỏi này cho chúng tôi thấy một ví dụ hay về một trang quá khổ do lạm dụng xác thực HTML. Tôi không thể nghĩ làm thế nào một trang HTML hợp lệ có thể bị quá nhiều so với cùng một trang với mã HTML không hợp lệ.
Marco Demaio

1

không có bất lợi về việc có html hợp lệ. có một lý do tại sao có một thông số kỹ thuật ở nơi đầu tiên và tại sao rất nhiều nỗ lực được đưa vào thông số kỹ thuật để xác định cách mọi thứ nên hoạt động.

về cơ bản, tất cả những gì bạn đạt được là để đáp ứng các thông số kỹ thuật. điều đó có nghĩa là, các chương trình được viết để đọc html (trình duyệt, bot) không thể đổ lỗi cho BẠN vì đã không đáp ứng thông số kỹ thuật nếu có sự cố. và một số chương trình này cung cấp cho bạn ngoại suy (thứ hạng cao hơn trong công cụ tìm kiếm nếu bot báo cáo "đáp ứng thông số kỹ thuật"). nếu bạn gặp thông số kỹ thuật, bạn sẽ bị bất ngờ ít hơn nhiều nếu một số trình duyệt không hiển thị html bị hỏng theo cách bạn nghĩ.

Vì vậy, để đáp ứng các thông số kỹ thuật và viết html hợp lệ là tốt cho bạn, không có nhược điểm nào cả.


Hum, công cụ tìm kiếm nào bạn có được thứ hạng cao hơn nếu bạn đáp ứng thông số kỹ thuật?

2
Nhược điểm sẽ là thời gian phát triển bổ sung mà bạn dành để đảm bảo rằng tất cả mã của bạn đáp ứng thông số kỹ thuật. Mặc dù chi phí này thường là tối thiểu, nhưng nó vẫn nên được giải quyết như một bất lợi.
chatche

@kinopiko: Nếu có bất kỳ cái nào, nó không phải là một trong những cái chính (Google, Yahoo, Bing, Ask). Có một mớ hỗn độn mã mà ngay cả một nhà phát triển web (người) dày dạn không thể đọc có thể sẽ cản trở bạn, nhưng sử dụng một số thuộc tính "bất hợp pháp" hoàn toàn không ảnh hưởng đến thứ hạng.
DisgruntledGoat 18/07

Đó là vấn đề với thuật ngữ xác nhận. Bạn hợp lệ hoặc bạn không. Không có bằng cấp. HTML bị hỏng (ví dụ: các thẻ không được tiết lộ, các thẻ cấu trúc bị thất lạc / thiếu, v.v.) không hợp lệ và gây tổn hại cho SEO, nhưng hầu hết mọi người không nói về điều đó khi họ nói "xác thực". Một người mới có thể muốn sử dụng trình xác nhận để đảm bảo rằng họ không mắc phải bất kỳ lỗi nào trong số những người mới đó, nhưng một nhà phát triển chuyên nghiệp không cần phải làm như vậy vì mã của họ đã "đủ hợp lệ" để nói về SEO.
Lèse majesté

1

Một số lỗi xác thực HTML có thể gây ra các sự cố bố cục không rõ ràng (ví dụ: các thẻ được lồng / không được đặt sai), lỗi JavaScript (ví dụ: sử dụng idnhiều lần) và các vấn đề đối với một số người dùng (ví dụ: không bao gồm altthuộc tính có ý nghĩa hoặc trống trên hình ảnh).

Nếu tất cả các trang của chúng tôi xác thực, đó là một kiểm tra tự động tốt đẹp mà bạn có thể làm để loại trừ các nguồn lỗi. Nếu bạn để lại một số lỗi xác thực vì bạn biết rằng chúng không gây ra bất kỳ tác hại nào, séc của bạn không còn tự động nữa: bạn phải xem xét từng lỗi và nhớ rằng nó ổn. Cá nhân, tôi thích nó khi máy tính giảm số lượng công việc tôi phải làm hơn là tăng nó.


1

Một điểm không ai nhắc đến là sự phát triển trình duyệt trong tương lai. Mặc dù tất cả các trình duyệt ngày nay xử lý đánh dấu không hợp lệ tương đối tốt, nhưng điều đó có thể không phải luôn luôn như vậy.

Các nhà sản xuất trình duyệt trong tương lai sẽ đảm bảo trình duyệt của họ hoạt động theo tiêu chuẩn HTML / XHTML, vì vậy đây là điều mà các nhà phát triển web cũng nên đạt được. Chỉ vì một chút đánh dấu không hợp lệ hoạt động hiện không đảm bảo nó sẽ hoạt động trong các trình duyệt trong tương lai.


Tôi phải nói rằng tôi tự hỏi nếu đó là sự thật.

2
Vâng, tôi không thể thấy bất kỳ trình duyệt nào từng bỏ hỗ trợ cho <font>thẻ hoặc ilk của nó.
DisgruntledGoat

Tôi không thấy vấn đề là gì - hỗ trợ cho việc đánh dấu không được chấp nhận hoặc không hợp lệ có thể thay đổi trong tương lai. Nhìn quá mức việc triển khai (X) HTML không hoàn hảo trong hầu hết các trình duyệt, chắc chắn bạn sẽ an toàn hơn khi gắn bó với đánh dấu hợp lệ. Không có chi phí liên quan đến đánh dấu hợp lệ, ngoài việc đơn giản là biết những gì bạn đang làm.
CJM

1

Hiệu lực giúp bạn tránh sự không tương thích và giúp duy trì mã. Trình duyệt phục hồi từ các lỗi đánh dấu, nhưng đôi khi theo những cách rất không trực quan.


  • Dựa trên DTD (HTML4, XHTML1 @ W3C) - Có thể không đáng. DTD là nguyên thủy và, ví dụ, không thể kiểm tra tính hợp lệ của hầu hết các thuộc tính. Bạn sẽ khó hiểu các lỗi về các thực thể và lồng nhau.

  • Trình xác thực HTML5 - . Chắc chắn rồi. HTML5 thực dụng hơn và cho phép một số cấu trúc vô hại từng là lỗi. Trình xác nhận của OTOH Henri kỹ lưỡng hơn và tốt hơn trong việc khám phá các vấn đề thực sự.


Hiệu lực của mã do JS tạo có thể quan trọng, vì các trình duyệt hoạt động trên DOM, bất kể nó được tạo như thế nào. Nếu bạn sử dụng document.write(), thì bạn thậm chí phải cẩn thận để có được cú pháp chính xác (nó đi qua cùng trình phân tích cú pháp như nguồn trang).



0

Google và Bing không, không và sẽ không bao giờ sử dụng xác thực CSS hoặc HTML làm yếu tố xếp hạng.

Phần lớn các trang web có hàng chục đến hàng trăm lỗi và bạn không cần phải lo lắng về chúng bởi vì tất cả các công cụ tìm kiếm quan tâm là cách trang hiển thị. Chỉ cần đảm bảo trang web của bạn hiển thị chính xác trong tất cả các trình duyệt chính và Fetch của Google .

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.