รับ IE Version จาก User-Agent
var ie = 0;
try { ie = navigator.userAgent.match( /(MSIE |Trident.*rv[ :])([0-9]+)/ )[ 2 ]; }
catch(e){}
วิธีการทำงาน:สตริงตัวแทนผู้ใช้สำหรับ IE ทุกเวอร์ชันรวมถึงส่วน "MSIE space version " หรือ "Trident other-text rv space-or-colon version " เมื่อรู้อย่างนี้เราก็หยิบหมายเลขเวอร์ชั่นจากString.match()
นิพจน์ปกติ try-catch
บล็อกจะใช้ในการร่นรหัสมิฉะนั้นเราจะต้องทดสอบขอบเขตอาร์เรย์สำหรับเบราว์เซอร์ที่ไม่ใช่ IE
หมายเหตุ:เอเจนต์ผู้ใช้สามารถถูกปลอมแปลงหรือถูกละเว้นบางครั้งไม่ได้ตั้งใจหากผู้ใช้ตั้งค่าเบราว์เซอร์เป็น "โหมดความเข้ากันได้" ถึงแม้ว่าสิ่งนี้จะไม่ดูเหมือนปัญหาในทางปฏิบัติมากนัก
รับ IE Version โดยไม่มี User-Agent
var d = document, w = window;
var ie = ( !!w.MSInputMethodContext ? 11 : !d.all ? 99 : w.atob ? 10 :
d.addEventListener ? 9 : d.querySelector ? 8 : w.XMLHttpRequest ? 7 :
d.compatMode ? 6 : w.attachEvent ? 5 : 1 );
วิธีการทำงาน: IE แต่ละเวอร์ชันเพิ่มการรองรับคุณสมบัติเพิ่มเติมที่ไม่พบในรุ่นก่อนหน้า ดังนั้นเราสามารถทดสอบคุณสมบัติต่างๆได้จากบนลงล่าง ternaryลำดับจะใช้ที่นี่สำหรับความกะทัดรัด แต่if-then
และswitch
งบจะทำงานก็เช่นกัน ตัวแปรie
ถูกตั้งค่าเป็นจำนวนเต็ม 5-11 หรือ 1 สำหรับเก่ากว่าหรือ 99 สำหรับใหม่ / ไม่ใช่ IE คุณสามารถตั้งค่าเป็น 0 หากคุณต้องการทดสอบ IE 1-11 อย่างแน่นอน
หมายเหตุ:การตรวจจับวัตถุอาจแตกถ้ารหัสของคุณทำงานบนหน้าเว็บที่มีสคริปต์ของบุคคลที่สามที่เพิ่ม polyfills document.addEventListener
สำหรับสิ่งที่ต้องการ ในสถานการณ์เช่นนี้ตัวแทนผู้ใช้เป็นตัวเลือกที่ดีที่สุด
ตรวจสอบว่าเบราว์เซอร์ทันสมัยหรือไม่
หากคุณสนใจว่าเบราว์เซอร์รองรับมาตรฐาน HTML 5 และ CSS 3 เกือบทั้งหมดหรือไม่คุณสามารถสันนิษฐานได้ว่า IE 8 และต่ำกว่านั้นยังคงเป็นปัญหาหลักของแอป การทดสอบwindow.getComputedStyle
จะให้เบราว์เซอร์สมัยใหม่ที่ผสมผสานกันอย่างเป็นธรรมเช่นกัน (IE 9, FF 4, Chrome 11, Safari 5, Opera 11.5) IE 9 ปรับปรุงการสนับสนุนมาตรฐานอย่างมาก แต่ภาพเคลื่อนไหว CSS ดั้งเดิมต้องการ IE 10
var isModernBrowser = ( !document.all || ( document.all && document.addEventListener ) );