يبدو أن "ie = anmulateie7" ستجعل أيضًا "" كن صحيحًا؟
-
29-09-2019 - |
سؤال
يبدو أنه عندما تحتوي صفحة الويب
<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]-->