สมมติว่า ...
- ... นั่นคือเอ็นจิ้นการเรนเดอร์ของ IE เวอร์ชันเก่าที่คุณสนใจในการตรวจจับเพื่อทำให้สไตล์ดูถูกต้องใน IE รุ่นเก่า (มิฉะนั้นให้ใช้การตรวจจับคุณสมบัติ)
- ... คุณไม่สามารถเพิ่มความคิดเห็นแบบมีเงื่อนไขลงใน HTML ได้เช่นปลั๊กอิน JS ที่สามารถนำไปใช้กับหน้าใดก็ได้ (มิฉะนั้นเพียงแค่ใช้เคล็ดลับของคลาสเงื่อนไขบน
<body>
หรือ<html>
)
... นี่อาจเป็นเคล็ดลับที่ดีที่สุด (ขึ้นอยู่กับตัวแปรที่ไม่ใช่ jQuery ซึ่งมีความยืดหยุ่นน้อยกว่าเล็กน้อย ) จากนั้นจะสร้างการทดสอบเพื่อลบความคิดเห็นตามเงื่อนไขที่เหมาะสม
(ความคิดเห็นแบบมีเงื่อนไขจะถูกละเว้นใน 'โหมดมาตรฐาน' ของ IE10 + - แต่ก็น่าจะใช้ได้เนื่องจาก IE10 + 'โหมดมาตรฐาน' ไม่มีเอ็นจิ้นการเรนเดอร์ที่บ้าคลั่ง!)
วางฟังก์ชั่นนี้:
function isIE( version, comparison ){
var $div = $('<div style="display:none;"/>');
// Don't chain these, in IE8 chaining stops some versions of jQuery writing the conditional comment properly
$div.appendTo($('body'));
$div.html('<!--[if '+(comparison||'')+' IE '+(version||'')+']><a> </a><![endif]-->');
var ieTest = $div.find('a').length;
$div.remove();
return ieTest;
}
จากนั้นใช้ดังนี้:
if(isIE()){ /* runs in all versions of IE after 4 before standards-mode 10 */ }
if(isIE(8)){ /* runs in IE8 */ }
if(isIE(9)){ /* runs in IE9 */ }
if(isIE(8,'lte')){ /* runs in IE8 or below */ }
if(isIE(6,'lte')){ /* if you need this, I pity you... */ }
ฉันขอแนะนำให้แคชผลลัพธ์ของฟังก์ชันนี้เพื่อที่คุณจะได้ไม่ต้องทำซ้ำ ตัวอย่างเช่นคุณสามารถใช้สตริง(comparison||'')+' IE '+(version||'')
เป็นคีย์ในการจัดเก็บและตรวจสอบผลลัพธ์ของการทดสอบนี้ในวัตถุที่ไหนสักแห่ง