تم إصدار أقصر حكم IE في الماضي من خلال الميزة القائلة بأن IE لا يدعم علامات التبويب الرأسية.
نسخة الكود كما يلي:
var ie =!+"/v1" ؛
هناك حاجة إلى 7 ببيتيس فقط! شاهد هذا المقال ، "32 بايت ، EHR ... 9 ، EHR ... 7 !!! لمعرفة ما إذا كان متصفحك هو IE" ، يروي قصة كيف خفض الأجانب حكم IE من 32 بايت إلى 7 بايت! لكن هذا السجل تم كسره من قبل روسي في 8 يناير من هذا العام. الآن يستغرق 6 بايت فقط! يستخدم الفرق بين IE والمتصفحات القياسية في صفائف المعالجة. بالنسبة للمتصفحات القياسية ، إذا كانت الحرف الأخير في الصفيف عبارة عن فاصلة ، فسيقوم محرك JS بإزالته تلقائيًا.
نسخة الكود كما يلي:
var ie =!-[1 ،] ؛
كان هذا الرمز يسمى أقصر رمز الحكم في العالم قبل IE9. على الرغم من أن الكود قصير ، إلا أنه يحتوي على الكثير من المعرفة الأساسية JavaScript. في هذا المثال ، عند تنفيذ الكود ، سيتم استدعاء طريقة ToString () للمصفوفة أولاً. تنفيذ [1 ،]. tostring () في IE6 ، 7 ، 8 سوف تحصل على "1 ،". ثم يصبح التعبير!-"1 ،". ثم حاول تحويل "1" ، إلى نوع رقمي للحصول على نان ، ثم أخذ نان سلبي للحصول على القيمة لا تزال نان. أخيرا تنفيذ! نان يعود صحيح. فيما يلي مراجعة المعرفة JavaScript التي تنطوي على الكود عن طريق تحلل هذا البيان:
1. فرق التحليل الحرفي للمتصفح
[1 ،] يعني أنه يتم تعريف صفيف باستخدام صفيف JavaScript الحرفي. في IE6 ، 7 ، 8 ، هناك عنصرين من الصفيف ، والقيم في الصفيف هي 1 ، غير محددة. في متصفح قياسي ، يتم تجاهل غير محدد بعد العنصر الأول ، ويحتوي المصفوفة على عنصر واحد فقط.
2. طريقة ToString () من المصفوفة
عند استدعاء طريقة ToString () لكائن الصفيف ، سيتم استدعاء طريقة ToString () على كل عنصر في الصفيف. إذا كانت قيمة العنصر لاغية أو غير محددة ، فسيتم إرجاع سلسلة فارغة ، وسيتم توضيح قيمة كل عنصر في سلسلة مفصولة بواسطة الفواصل "،".
3. عامل ناقص واحد
عند استخدام مشغل Unary Minus ، إذا كان رقم التشغيل هو نوع رقمي ، فسوف ينفي مباشرة رقم العملية. خلاف ذلك ، ستحاول أولاً تحويل رقم العملية إلى نوع رقمي. عملية التحويل تعادل تنفيذ وظيفة الأرقام ، ثم سلبية النتيجة.
4
إرجاع صحيح إذا كان المعامل نان أو لاغية أو غير محددة عند إجراء عمليات غير منطقية.
يمكن كتابة JavaScript مثل هذا:
نسخة الكود كما يلي:
var ie =!-[1 ،] ؛
تنبيه (أي) ؛
إذا نحكم على منظور غير IE ، فيمكننا توفير بت واحد ، لأنه عندما نكون متوافقين ، معظم الوقت ، أي البدء في البناء. var notie = -[1 ،] ؛
نسخة الكود كما يلي:
if (-[1 ،]) {
تنبيه ("هذا ليس متصفح IE!") ؛
}آخر{
في حالة تأهب ("هذا هو متصفح IE!") ؛
}
من المعرفة أعلاه ، يمكننا الحصول على الكود var ie =!-[1 ،] ؛ في الواقع يعادل var ie =! (-الرقم ([1 ،]. toString ())) ؛ القيمة في IE6/7/8 صحيحة.
لأن IE6/7/8 لن يتجاهل الخلل [1 ،]. ToString () ، أي ما تحصل عليه هو "1" ؛ و -nuping ([1 ،]. tostring ()) هو رقم ("1 ،") والنتيجة هي nan ؛ ثم! (-الرقم ([1 ،]. tostring ())) هو! (نان) صحيح. فرضية كل شيء هي أن IE6/7/8 لديه الخطأ [1 ،].
لقد وجدت مؤخرًا أن صديقًا استخدم هذا للمستخدمين على ترقية متصفحهم
<script>!-[1 ،] && ALERT ('أنت تستخدم إصدار IE6-8 من المتصفح. يوصى باستخدام Chrome ، Firefox ، IE9+ للتصفح مع/n/n!') ؛ </script>