كيفية معرفة ما إذا كان المتصفح هو في "المراوغات" الوضع ؟

StackOverflow https://stackoverflow.com/questions/627097

  •  06-07-2019
  •  | 
  •  

سؤال

دعونا نفترض أن لديك صفحة مع صارمة نسبيا doctype HTML العلامات التي هي قريبة جدا متوافقة ، ولكن ربما يخطئ في بعض طرق سخيفة ، ربما بسبب محتوى المستخدم هذا خارج عنصر التحكم الخاص بك...ويقول كنت تعمل على نظام إدارة محتوى أو موضوع نظام إدارة المحتوى حيث يمكنك السيطرة على بعض البنية الأساسية وتحتاج إلى بعض جافا سكريبت, لكن أنت لست مسؤولة عن كل شيء آخر أن يذهب إلى صفحات.

كيف يمكنك معرفة (أو:ما سيحدد) عندما المتصفح يقرر أن يذهب إلى "المراوغات" الوضعية بدلا من استخدام الأمر أكثر متوافقة مع المعايير المحرك ؟

أنا أبحث عن إجابات لكل المتصفحات الرئيسية ، منذ IE, Chrome, Safari, وسوف فايرفوكس بالطبع التعامل مع كل هذا بشكل مختلف.هو واحد خطأ ما يكفي من القوة أو هل لديك بعض الفسحة?

هل كانت مفيدة؟

المحلول

في فايرفوكس وأوبرا يمكنك تحديد ما إذا كان المستعرض الخاص بك في "وضع المراوغات" عن طريق التحقق من معلومات الصفحة.

باستخدام document.compatMode, سوف اقول لكم الوضع الذي هي في معظم المتصفحات.

في كروم, رحلات السفاري, و أي, تشغيل هذه جافا سكريبت في شريط العنوان:

 javascript:window.alert('You are in ' + (document.compatMode==='CSS1Compat'?'Standards':'Quirks') + ' mode.')

(ملاحظة أنك سوف تحتاج إلى إعادة كتابة javascript: جزء بعد لصق في شريط العنوان الخاص بك بسبب الأمن الأخيرة التغييرات)

نصائح أخرى

وكما يمكنك الاستعلام عن وضع تجعل في جافا سكريبت يمكنك الحصول على بووكمركلت التي سوف اقول لكم والتي تجعل وضع صفحة يستخدم.

ولقد وجدت هذا يجعل الوضع بووكمركلت الذي يعمل بشكل جيد بالنسبة لي:

javascript:m=(document.compatMode=='CSS1Compat')?'Standards':'Quirks';window.alert('You%20are%20in%20'%20+%20m%20+%20'%20mode.');

والجواب الكامل لسؤالك المحدد الفعلي "هو خطأ واحد يكفي لإجبارها أو هل لديك بعض الفسحة؟ غير أن ذلك يعتمد كليا على خطأ. على سبيل المثال،

<!-- Comment -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

وسيجبر وضع المراوغات في IE 6 و 7 على الرغم من عدم ebing حقا خطأ (أنها مجرد رمي ما مجموعه متذبذبة عند السطر الأول جدا من الملف ليس إعلانا). / المراوغات ويمكن الاطلاع على قائمة سريعة من أنواع هنا

وحاول الالتصاق السطر التالي في HTML الخاص بك لاختبار (behavious جافا سكريبت سيئة للغاية وأنا يمر هنا - آسف ... تأكد من هذا لم يذهب مباشرة:)

<a href="javascript:alert(document.compatMode);">What mode am I?</a>

إذا كنت اقول IE أنه ينبغي أن تكون صارمة (عبر DOCTYPE) انها لن تغير رأيها في منتصف الطريق من خلال الصفحة.

إذا فهمت طريقة المراوغات بشكل صحيح، الصفحة التي لا تتحقق ضد DOCTYPE المعلنة ليست كافية لتحريك الوضع المراوغات. وسوف فقط يتم عرض بشكل صحيح.

وأفضل الموارد وجدتها لتحديد كيفية التعامل مع مختلف المتصفحات كل نوع المستند هو هنا .

لفايرفوكس مع شريط أدوات الويب المطور إضافة، يمكنك إلقاء نظرة على ثلاثة من الرموز على يمين شريط. أقصى اليسار واحد يقول لك ما الوضع الذي أنت فيه.

في IE سوف نرى ذلك في أدوات المطور (الضغط على F12)، تقول انها في القائمة: وضع الوثيقة: ... ويمكنك أيضا فرض وضع مختلف هناك.

وفي الصفحة HTML5، والكتابة "<!DOCTYPE html>" تبدأ الصفحة يمكن تغيير ل document.compatMode = 'CSS1Compat'

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top