Kalo te përmbajtja
SEO Analyzer

Teknike

Deklarimi DOCTYPE

Rreshti <!DOCTYPE html> në krye të dokumentit; pa të, shfletuesi kalon në modalitet pajtueshmërie me shfletuesit e viteve '90.

Çfarë është

<!DOCTYPE html> është rreshti i parë i çdo dokumenti HTML. Ai nuk është etiketë dhe nuk përmban informacion — është një çelës.

Kur ekziston, shfletuesi renderon në "modalitet standardesh": zbaton rregullat moderne të CSS-së dhe të layout-it. Kur mungon, shfletuesi kalon në "modalitet të çuditshëm" (*quirks mode*), ku imiton sjelljen e Internet Explorer 5 për të mos prishur faqe të vitit 1998.

Në atë modalitet, llogaritja e gjerësive ndryshon, lartësitë e rreshtave ndryshojnë, dhe një pjesë e mirë e CSS-së moderne sillet ndryshe nga sa pret.

Pse ka rëndësi

Pasoja është vizuale dhe e papritshme. Faqja mund të duket pothuajse e saktë dhe të ketë një element të zhvendosur, ose të shpërbëhet krejt. Simptoma klasike është layout-i që del i saktë në një shfletues dhe i prishur në një tjetër, sepse modaliteti i çuditshëm nuk zbatohet njësoj kudo.

Problemi është veçanërisht i keq për layout-e të rrjedhshme: llogaritja e gjerësisë së kutive ndryshon, dhe një faqe e ndërtuar për telefon shpërbëhet.

Për motorët e kërkimit, mungesa e DOCTYPE-it nuk është faktor renditjeje i drejtpërdrejtë. Por motori e renderon faqen për të vlerësuar përdorshmërinë mobile — dhe nëse ajo shpërbëhet në render, vlerësimi bie.

Shkaku është gati gjithnjë i njëjti: diçka shkruhet para DOCTYPE-it. Një hapësirë, një rresht bosh nga një skedar i përfshirë, ose një BOM.

Si rregullohet

<!DOCTYPE html>
<html lang="sq">
<head>
  <meta charset="utf-8">

Hapat:

  • Asgjë para tij. As hapësirë, as rresht bosh, as koment.
  • Kontrollo skedarët e përfshirë. Në PHP, një rresht bosh pas ?> te një skedar i përfshirë del në dalje para DOCTYPE-it.
  • Ruaj skedarët pa BOM. Tri bajtet e BOM-it shfaqen para DOCTYPE-it dhe e prishin.
  • Përdor formën e shkurtër `<!DOCTYPE html>`, jo variantet e gjata XHTML.
  • Për ta parë modalitetin aktual, hap konsolën e shfletuesit dhe shkruaj document.compatModeCSS1Compat do të thotë modalitet standardesh, BackCompat do të thotë modalitet i çuditshëm.

Si e mat ky mjet

TechnicalAnalyzer::checkDoctype() (services/TechnicalAnalyzer.php:74) kërkon nënvargun <!doctype brenda 100 shenjave të para të HTML-së së papërpunuar, pa marrë parasysh shkronjat e mëdha. Dy dalje: gjendet (:79, kaluar), nuk gjendet (:81, paralajmërim).

Çfarë NUK e mat

Kontrolli është kërkim nënvargu, jo parsim. Ai nuk dallon midis <!DOCTYPE html> dhe një DOCTYPE-i të vjetër XHTML ose HTML 4 — të dyja kalojnë, ndonëse vetëm e para e garanton modalitetin e standardeve në çdo shfletues.

Nuk kontrollohet as nëse ka tekst para DOCTYPE-it: mjafton që ai të rrijë brenda 100 shenjave të para. Një dokument me 50 shenja mbeturinë përpara e kalon kontrollin, ndonëse shfletuesi mund ta trajtojë ndryshe.

Dhe nuk verifikohet sjellja reale — mjeti nuk e renderon faqen, prandaj nuk e di se në cilin modalitet përfundoi vërtet.

Kodi që e kryen matjen

  • services/TechnicalAnalyzer.php:74TechnicalAnalyzer::checkDoctype
  • services/TechnicalAnalyzer.php:81missing_doctype

Standardi