سؤال

يبدو أنه عندما تحتوي صفحة الويب

<meta content='IE=EmulateIE7' http-equiv='X-UA-Compatible' />

بحيث يحاكي IE 8 أي 7 ، ثم في وقت لاحق في صفحة الويب ، عندما يكون هناك

<!--[if lt IE 8]> 
  <link href="http://www.example.com/stylesheets/compiled/ie.css" type="text/css" />
<![endif]-->

ثم سيتم تحميله أيضًا ie.css?

هذا هو ، هو IE 8 ، محاكاة IE 7 ، وهكذا lt IE 8 سوف يكون true?

تحديث: ولكن بعد ذلك ، متغير جانب الخادم HTTP_USER_AGENT سوف لا يزال يقول أي 8؟ نظرًا لأن المتصفح يذهب إلى الخادم مثل IE 8 ، يعطي IE 8 كسلسلة من http_user_agent ، ثم يرد الخادم مع الرغبة في محاكاة IE 7. لذلك إذا كانت لغة الخادم مثل PHP تكتشف http_user_agent ، فسيظل ذلك 8 في لغة الخادم مثل وضع التوافق (أي 7 محاكاة)؟

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

المحلول

هذا هو الهدف الكامل من علامة التعريف هذه ، أليس كذلك؟ اللحظة التي لديك هذا:

<meta content='IE=EmulateIE7' http-equiv='X-UA-Compatible' />

يبدأ IE8 في التصرف على جانب العميل مثل IE7:

  • ستجعل صفحاتك جميعها كما تفعل في IE7
  • تعليقاتك الشرطية التي تستهدف أي شيء أقدم من IE8 (<!--[if lt IE 8]>) ستتم قراءتها أيضًا ، ويتم تنفيذ الكود داخل ie.css هو محمل

ومع ذلك ، فإن مفتاح IE7 يحدث فقط بعد أن يقرأ IE8 علامة التعريف. منذ أن يتم إرجاع HTML الخاص بك كجزء من الاستجابة ، يتعين على IE8 أن تطلب ذلك أولاً. نظرًا لأن IE8 ليس لديه أي فكرة مسبقًا أن علامة التعريف هذه ستظهر ، فإن سلسلة وكيل المستخدم التي يرسلها هي MSIE 8.0. PHP ثم يتعرف عليها على أنها IE8.

نصائح أخرى

إذا كنت تريد حلًا مختلفًا (وكنت على استعداد لاستخدامه) ، فيمكنك استخدام jQuery لاكتشاف المتصفح (jQuery.browser). إنه ينتج مع IE7 لـ IE8 في وضع التوافق.

إذا كنت تخبر IE8 بمحاكاة IE7 ، فيمكنك الوثوق بأن CSS لـ IE7 يجب أن تعمل بشكل صحيح. فقط استخدم LTE بدلاً من LT.

<!--[if IE 8]> 
   <meta content='IE=EmulateIE7' http-equiv='X-UA-Compatible' />
<![endif]-->
<!--[if lte IE 8]> 
  <link href="http://www.example.com/stylesheets/compiled/ie.css" type="text/css" />
<![endif]-->
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top