استفاده از عنصر DOCTYPE در حالت Quirks

از Doctype خارج شوید تا مرورگرها را به حالت Quirks بگذارید

اگر صفحات وب را برای بیش از چند ماه طراحی کرده باشید، به احتمال زیاد از سختی در نوشتن یک صفحه که در همه مرورگرها یکسان است، آگاه هستید . در واقع، این غیرممکن است. بسیاری از مرورگرها با ویژگی های خاصی نوشته شده اند که فقط آنها می توانند اداره کنند. یا آنها روشهای خاصی برای مدیریت مواردی دارند که متفاوت از نحوه مرورگرهای دیگر آنها است. مثلا:

مشکل برای توسعه دهندگان مرورگر این است که آنها باید مرورگرهای وب را ایجاد کنند که با صفحات وب ساخته شده برای مرورگرهای قدیمی سازگار باشند. برای مقابله با این مسئله، سازندگان مرورگر حالت هایی را برای مرورگر ها برای کارکردن ایجاد می کنند. این حالت ها با حضور یا عدم وجود یک عنصر DOCTYPE و آنچه که DOCTYPE نامیده می شود تعریف می شود.

سوئیچ DOCTYPE و "حالت خاموشی"

اگر DOCTYPE زیر را در صفحه وب خود قرار دهید:

مرورگرهای مدرن (Android 1+، Chrome 1+، IE 6+، iOS 1+، Firefox 1+، Netscape 6+، Opera 6+، Safari 1+) این را به روش زیر تفسیر می کنند:

  1. از آنجا که یک DOCTYPE به درستی نوشته شده است، این باعث می شود حالت استاندارد.
  2. این یک سند HTML 4.01 است
  3. از آنجا که در حالت استاندارد است، اغلب مرورگرها متناسب با محتوای (یا اغلب سازگار) را با HTML 4.01 Transitional

و اگر این DOCTYPE را در سند خود قرار دهید:

این به مرورگرهای مدرن می گوید که شما می خواهید صفحه HTML 4.01 خود را در انطباق کامل با DTD نمایش دهید.

این مرورگرها به حالت "سخت" یا "استاندارد" می روند و صفحه را مطابق با استانداردهای ارائه می کنند. (بنابراین، برای این سند، برچسب ها مانند ممکن است به طور کامل توسط مرورگر نادیده گرفته شود، زیرا عنصر FONT در HTML 4.01 Strict نادیده گرفته شده است.)

اگر DOCTYPE را کاملا از بین ببرید، مرورگرها به طور خودکار به حالت پیش فرض باز می گردند.

جدول زیر نشان می دهد که مرورگرهای معمول زمانی که با اعلامیه های متداول DOCTYPE مشترک نمایش داده می شوند.

مایکروسافت این را سخت تر می کند

اینترنت اکسپلورر 6 نیز دارای ویژگی است که اگر شما هر چیزی را در بالا از اعلام DOCTYPE قرار دهید، آنها به حالت پیش فرض حرکت خواهند کرد. بنابراین، هر دو این نمونه IE 6 را در حالت پیش فرض قرار می دهند، حتی اگر اعلامیه DOCTYPE در حالت استاندارد سخت باشد:

و XHTML 1.1 DOCTYPE:

به علاوه، اگر شما از IE6 گذشته هستید، پس از آن شما دارای "ویژگی" است که مایکروسافت در IE8 و IE9 اضافه: تعویض عنصر META و لیست سیاه وب سایت. در واقع، این دو نسخه مرورگر در حال حاضر تا 7 (!) حالت های مختلف:

اینترنت اکسپلورر 8 نیز "حالت سازگاری" را معرفی کرد که در آن کاربر می تواند برای تغییر مدل رندر به حالت IE 7 انتخاب کند. به طوری که حتی اگر حالت را که می خواهید با استفاده از عناصر DOCTYPE و META تنظیم کنید، تنظیم کنید، صفحه شما همچنان می تواند به یک حالت سازگار با استانداردهای کمتر منجر شود.

حالت خاموشی چیست؟

حالت خاموشی برای کمک به مقابله با تمام پشتیبانی های رندر عجیب و غریب و غیر سازگار با مرورگرها و هک هایی که طراحان وب برای مقابله با آن چیزها استفاده می کردند ایجاد شد. نگران تولید کنندگان مرورگر این بود که اگر آنها مرورگرهای خود را به متناسب با مشخصات کامل تغییر دهند، طراحان وب پشت سر گذاشته خواهند شد.

با تنظیم سوئیچ DOCTYPE و حالت Quirks Mode این اجازه می دهد طراحان وب انتخاب کنند که چگونه مرورگرها می خواهند HTML خود را ارائه دهند.

خنده دار حالت اثر

چندین اثر که اکثر مرورگرها در حالت Quirks استفاده می کنند وجود دارد:

در "تقریبا استانداردهای حالت" تفاوت وجود دارد:

چگونه یک DOCTYPE را انتخاب کنید

من جزئیات بیشتری در مورد مقاله DOCTYPE List می خواهم، اما در اینجا برخی از قوانین کلی:

  1. همیشه اولویت استاندارد را انتخاب کنید. و استاندارد فعلی شما باید استفاده کنید HTML5 است:
    به استثنای اینکه دلیل خاصی برای جلوگیری از استفاده از HTML5 DOCTYPE دارید، این چیزی است که باید استفاده کنید.
  2. به سخت افزار HTML 4.01 بروید اگر شما نیاز به تایید عناصر قدیمی دارید یا می خواهید از بعضی از دلایل اجتناب از ویژگی های جدید استفاده کنید:
  3. اگر تصاویر را در یک جدول جدا کرده اید و نمی خواهید آنها را اصلاح کنید، به HTML 4.01 منتهی به:
  4. صفحات را عمدا در حالت پیش فرض بنویسید. همیشه از یک DOCTYPE استفاده کنید این به شما در زمان توسعه در آینده صرفه جویی خواهد کرد و واقعا هیچ مزیتی ندارد. IE6 به سرعت در حال از دست دادن محبوبیت است و با طراحی برای این مرورگر (که اساسا همان چیزی است که در حالت پیشفرض طراحی شده است) شما محدودیت خود، خوانندگان و صفحات خود را محدود می کنید. اگر شما باید برای IE 6 یا 7 بنویسید، پس از اعمال مرورگرهای مدرن به حالت پیش فرض، از نظر شرطی برای حمایت از آنها استفاده کنید.

چرا استفاده از DOCTYPE

هنگامی که از این نوع سوئیچینگ DOCTYPE آگاه هستید، می توانید صفحات وب خود را با استفاده از DOCTYPE به طور مستقیم بیشتر تحت تاثیر قرار دهید که نشان می دهد مرورگر چه چیزی از صفحه شما انتظار دارد. همچنین، هنگامی که شما شروع به استفاده از DOCTYPE می کنید، شما HTML را نوشته خواهید شد که به اعتبار نزدیک تر است (هنوز باید آن را تأیید کنید). و با نوشتن XHTML معتبر، شما سازندگان مرورگر را برای ایجاد مرورگرهای سازگار با استاندارد تشویق می کنید.

نسخه های مرورگر و حالت Quirks

DOCTYPE اندروید
کروم
فایرفاکس
اینترنت اکسپلورر 8+
در iOS
اپرا 7.5+
سافاری
IE 6
IE 7
اپرا 7
Netscape 6
هیچ یک حالت خاموشی حالت خاموشی حالت خاموشی
HTML 3.2
حالت خاموشی حالت خاموشی حالت خاموشی
HTML 4.01
گذار حالت استاندارد * حالت استاندارد * حالت استاندارد
گذار حالت خاموشی حالت خاموشی حالت خاموشی
سخت گیرانه حالت استاندارد حالت استاندارد * حالت استاندارد
سخت گیرانه حالت استاندارد حالت استاندارد * حالت استاندارد
HTML5
حالت استاندارد حالت استاندارد * حالت خاموشی
* با استفاده از این DOCTYPE، مرورگرها به استانداردها نزدیک هستند، اما برخی از مسائل را بررسی می کنند. این نیز به عنوان "حالت تقریبا استانداردها" شناخته می شود.