วิธีการตรวจสอบ IE11?


212

เมื่อฉันต้องการตรวจจับ IE ฉันใช้รหัสนี้:

function getInternetExplorerVersion()
{
  var rv = -1;
  if (navigator.appName == 'Microsoft Internet Explorer')
  {
    var ua = navigator.userAgent;
    var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
    if (re.exec(ua) != null)
      rv = parseFloat( RegExp.$1 );
  }
  return rv;
}
function checkVersion()
{
  var msg = "You're not using Internet Explorer.";
  var ver = getInternetExplorerVersion();

  if ( ver > -1 )
  {
    msg = "You are using IE " + ver;
  }
  alert( msg );
}

แต่ IE11 กำลังส่งคืน "คุณไม่ได้ใช้ Internet Explorer" ฉันจะตรวจจับได้อย่างไร



1
สิ่งใดก็ตามที่อิงตามตัวแทนผู้ใช้นั้นมีข้อบกพร่อง มันง่ายเกินไปที่จะปลอมแปลงตอนนี้อาจเป็นไปได้ว่านี่ไม่ใช่ปัญหา แต่สำหรับฉันแล้วดูเหมือนว่าสคริปต์ตรวจสอบเบราว์เซอร์ควรมีโอกาสพอสมควรในการตรวจจับการปลอมแปลง ฉันใช้การรวมกันของความคิดเห็นตามเงื่อนไข, ล้มเหลวในการพยายามที่จะบีบบังคับ document.documentMode แล้วมองไปที่หน้าต่าง MSInputMethodContext ตาม Paul Sweatte ด้านล่าง ฉันจะโพสต์รหัสของฉัน แต่มันเฆี่ยนตีม้าตาย
— David G

3
IE11 มี user-agent: Mozilla / 5.0 (Windows NT 6.1; WOW64; Trident / 7.0; rv: 11.0) เช่น Gecko Os ประเภท: 6.1 - win7, 6.3 - win81
— razor

1
ดูคำตอบของฉันที่นี่stackoverflow.com/questions/21825157/…
— Royi Namir

1
นี่คือทางออกที่ดีที่สุดที่ฉันพบ: stackoverflow.com/a/20201867/2047385 ถ้า (Object.hasOwnProperty.call (หน้าต่าง "ActiveXObject") &&! window.ActiveXObject) {// คือ IE11}
— xorcus

คำตอบ:


221

IE11 ไม่รายงานอีกต่อไปMSIEตามรายการการเปลี่ยนแปลงนี้มีเจตนาเพื่อหลีกเลี่ยงการตรวจจับที่ผิดพลาด

คุณสามารถทำอะไรถ้าคุณจริงๆต้องการที่จะรู้ว่ามันเป็น IE คือการตรวจสอบTrident/สตริงในตัวแทนผู้ใช้หากnavigator.appNameผลตอบแทนNetscapeบางอย่างเช่น (คนยังไม่ทดลอง);

function getInternetExplorerVersion()
{
  var rv = -1;
  if (navigator.appName == 'Microsoft Internet Explorer')
  {
    var ua = navigator.userAgent;
    var re = new RegExp("MSIE ([0-9]{1,}[\\.0-9]{0,})");
    if (re.exec(ua) != null)
      rv = parseFloat( RegExp.$1 );
  }
  else if (navigator.appName == 'Netscape')
  {
    var ua = navigator.userAgent;
    var re  = new RegExp("Trident/.*rv:([0-9]{1,}[\\.0-9]{0,})");
    if (re.exec(ua) != null)
      rv = parseFloat( RegExp.$1 );
  }
  return rv;
}

console.log('IE version:', getInternetExplorerVersion());

โปรดทราบว่า IE11 (afaik) ยังคงอยู่ในการแสดงตัวอย่างและตัวแทนผู้ใช้อาจมีการเปลี่ยนแปลงก่อนที่จะปล่อย


81
it's intentional to avoid mis-detection- น่าเสียดายที่ตอนนี้มีการเปิดตัว IE11 เรามีรหัสที่แตกหักในIE11 เท่านั้นในขณะที่การตรวจจับที่ถูกต้องของ IE จะทำงานได้ ...
— Izkata

68
ฉันแปลงโซลูชันนี้เป็นบูลีนหากรุ่นมีความสำคัญน้อยกว่าfunction isIE() { return ((navigator.appName == 'Microsoft Internet Explorer') || ((navigator.appName == 'Netscape') && (new RegExp("Trident/.*rv:([0-9]{1,}[\.0-9]{0,})").exec(navigator.userAgent) != null))); }
— rg89

6
@lzkata - ตามสเป็ค html5 ที่นี่ IE จริงตามมาตรฐาน ดังนั้นใช่มันเป็นความตั้งใจ แต่เป็นไปตามมาตรฐานใหม่ (คัดค้าน html api เก่า)
— Mark Avenius

11
"เหตุผลที่พวกเขาทำสิ่งนี้โดยเจตนาพวกเขาต้องการทำลายสคริปต์ตรวจจับของเบราว์เซอร์เช่นนี้" จากstackoverflow.com/a/18872067/1066234 ... ที่จริงแล้วมันควรจะเป็น: 'พวกเขาต้องการทำให้เว็บไซต์หลายพันล้านเว็บไซต์พังแบบนี้'
— Kai Noack

15
สิ่งนี้ใช้ได้กับฉัน: var isIE11 = !!navigator.userAgent.match(/Trident\/7\./); แหล่งที่มา
— Kai Noack

86

ใช้!(window.ActiveXObject) && "ActiveXObject" in windowเพื่อตรวจจับ IE11 อย่างชัดเจน

หากต้องการตรวจสอบเวอร์ชัน IE (pre-Edge, "ตรีศูล") ให้ใช้"ActiveXObject" in windowแทน


2
บทความ Microsoft นี้แนะนำวิธีแก้ไขปัญหานี้อาจไม่ทำงานอีกต่อไปmsdn.microsoft.com/en-us/library/ie/dn423948(v=vs.85).aspx
— Alan

5
จริงๆแล้วบทความนี้อธิบายถึงสาเหตุที่วิธีการของฉันทำงาน ความพยายามในการเข้าถึงwindow.ActiveXObjectดังที่อธิบายไว้ในบทความจะส่งคืนundefinedใน IE11 ทันที (รวมถึงเบราว์เซอร์ที่ไม่ใช่ของ Microsoft) การทดสอบโดยใช้ตัวinดำเนินการjavascript จะส่งคืนtrueในเบราว์เซอร์ Microsoft ทั้งหมดดังนั้นทั้งสองกรณีนี้เป็นอย่างเคร่งครัดใน IE11 หาก Microsoft ออกการเปลี่ยนแปลงพฤติกรรมของinผู้ดำเนินการใช่วิธีนี้จะหยุดลง
— mcw

5
"ActiveXObject" ในหน้าต่างคืนค่า False ใน Edge
— Neo

8
@Neo ขอบไม่ IE คำถาม OP ก็คือวิธีการตรวจสอบ IE11
— mastazi

1
@astazi ใช่ แต่ในคำตอบนี้มีการกล่าวถึงว่า ActiveXObject สามารถใช้ในการตรวจสอบเวอร์ชัน IE ใด ๆ แม้ว่าจะเป็นที่ถกเถียงกันว่าควรจะเรียก Edge ว่าเป็นรุ่นของ IE หรือไม่ (Microsoft ก็ไม่ต้องการที่จะเรียกมันว่าอย่างใดอย่างหนึ่ง) แต่สำหรับนักพัฒนาหลายคน IE ได้กลายเป็นคำพ้องสำหรับเบราว์เซอร์เริ่มต้นของ Microsoft
— Neo

45

ใช้MSInputMethodContextเป็นส่วนหนึ่งของการตรวจสอบคุณสมบัติการตรวจสอบ ตัวอย่างเช่น:

//Appends true for IE11, false otherwise
window.location.hash = !!window.MSInputMethodContext && !!document.documentMode;

อ้างอิง


2
ดูเหมือนว่าฉันจะแข็งแกร่งกว่านี้ แน่นอนว่าทุกอย่างขึ้นอยู่กับตัวแทนผู้ใช้นั้นค่อนข้างไร้ประโยชน์
— David G

1
ใช้งานได้แทน ActiveXObject ขอบคุณมาก
— TarıkÖzgünGüner

1
@tdakhla อัปเดตเพื่อกรอง IE Edge
— พอล Sweatte

สิ่งสำคัญที่ควรทราบสำหรับคำตอบใด ๆ ที่อาจดูเหมือนว่าไม่ได้ทำงานคือการตรวจสอบการตั้งค่า Emulation ฉันจะทำเครื่องหมายคำตอบนี้ว่าไม่ถูกต้อง แต่จากนั้นฉันตรวจสอบการจำลองและเห็นว่าการตั้งค่าความเข้ากันได้ของอินทราเน็ตนั้น เมื่อนำออกมาจากสมการแก้ปัญหานี้ใช้ได้ดีสำหรับฉัน
— Shaun

1
เพิ่งยืนยัน#falseในที่ไม่ใช่ IE, IE8,9,10, Edge 14,15 #trueใน IE11 เท่านั้น ไม่ได้ทดสอบกับโหมดเอกสารที่ใช้งานอยู่ ทดสอบกับ Browserstack
— danjah

15

ฉันอ่านคำตอบของคุณแล้วทำมิกซ์ ดูเหมือนว่าจะทำงานกับ Windows XP (IE7 / IE8) และ Windows 7 (IE9 / IE10 / IE11)

function ie_ver(){  
    var iev=0;
    var ieold = (/MSIE (\d+\.\d+);/.test(navigator.userAgent));
    var trident = !!navigator.userAgent.match(/Trident\/7.0/);
    var rv=navigator.userAgent.indexOf("rv:11.0");

    if (ieold) iev=new Number(RegExp.$1);
    if (navigator.appVersion.indexOf("MSIE 10") != -1) iev=10;
    if (trident&&rv!=-1) iev=11;

    return iev;         
}

แน่นอนถ้าฉันคืนค่า 0 หมายความว่าไม่มี IE


12

รับ 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 ) ); 

การทำงาน 'รับรุ่น IE จากตัวแทนผู้ใช้' เป็นอย่างดี! เพียงเพื่อให้แน่ใจว่านี้จะแสดงทุกรุ่นรวมถึง IE11?
— omer

1
@omer ใช่เพราะมันค้นหาสตริง "MSIE" หรือ "Trident"; หลังถูกใช้โดย IE 11 ขึ้นไป ดังนั้นมันจะทำงานกับ IE เวอร์ชันต่อไปในอนาคตจนกว่า MS จะเปลี่ยนชื่อเบราว์เซอร์ของมัน ฉันเชื่อว่าเบราว์เซอร์ Edge ใหม่ยังคงใช้ตรีศูล
— Beejor

มันใช้งานได้ดีขอบคุณ @Beejor! ฉันใช้การเปลี่ยนเส้นทางอย่างง่ายไปยังหน้าอื่นโดยใช้คำตอบของคุณ: var ie = 0; try { ie = navigator.userAgent.match( /(MSIE |Trident.*rv[ :])([0-9]+)/ )[ 2 ]; } catch(e){} if (ie !== 0) { location.href = "../ie-redirect/redirect.html"; }
— BernardV

@BernardV ดูดี! เคล็ดลับอย่างรวดเร็ว: หากคุณเข้าถึงเซิร์ฟเวอร์การตรวจสอบ user-agent ในสคริปต์อาจทำงานได้ดีขึ้นเนื่องจากผู้ใช้จะไม่สังเกตเห็นการเปลี่ยนเส้นทาง / การสั่นไหวการร้องขอ HTTP น้อยลง ฯลฯ แต่ใช้การบีบอัดด้วย JS ก็ทำงานเช่นกัน
— Beejor

9

JS เชิงมุมทำเช่นนี้

msie = parseInt((/msie (\d+)/.exec(navigator.userAgent.toLowerCase()) || [])[1]);
if (isNaN(msie)) {
  msie = parseInt((/trident\/.*; rv:(\d+)/.exec(navigator.userAgent.toLowerCase()) || [])[1]);
}

msie จะเป็นจำนวนบวกหาก IE และ NaN สำหรับเบราว์เซอร์อื่นเช่น chrome, firefox

ทำไม

ตั้งแต่ Internet Explorer 11 สตริงตัวแทนผู้ใช้มีการเปลี่ยนแปลงอย่างมีนัยสำคัญ

แนะนำสิ่งนี้:

msdn # 1 msdn # 2


7

สารละลาย :

function GetIEVersion() {
  var sAgent = window.navigator.userAgent;
  var Idx = sAgent.indexOf("MSIE");
  // If IE, return version number.
  if (Idx > 0)
    return parseInt(sAgent.substring(Idx+ 5, sAgent.indexOf(".", Idx)));

  // If IE 11 then look for Updated user agent string.
  else if (!!navigator.userAgent.match(/Trident\/7\./))
    return 11;

  else
    return 0; //It is not IE

}
if ((GetIEVersion() > 0) || (navigator.userAgent.toLowerCase().indexOf('firefox') > -1)){
  alert("This is IE " + GetIEVersion());
}else {
  alert("This no is IE ");
}		


1
รายการโปรดของฉัน - บัญชีสำหรับ IE6-10 และ IE11 ฉันเพิ่มในการตรวจสอบสำหรับขอบเช่นกัน
— AlbatrossCafe

สิ่งนี้จะตรวจพบ Firefox ในฐานะThis is IE 0
— KSPR

3

ฉันใช้วิธีที่ง่ายกว่า:

วัตถุโกลบอลเนวิเกเตอร์มีจุดสัมผัสคุณสมบัติใน Internet Exlorer 11 เรียกว่า msMaxTouchPoints tho

ดังนั้นหากคุณกำลังมองหา:

navigator.msMaxTouchPoints !== void 0 

คุณจะพบ Internet Explorer 11


1
นอกจากนี้ยังส่งคืน trun ใน IE 10 (Win 7)
— Chemical Programmer

2
var ua = navigator.userAgent.toString().toLowerCase();
var match = /(trident)(?:.*rv:([\w.]+))?/.exec(ua) ||/(msie) ([\w.]+)/.exec(ua)||['',null,-1];
var rv = match[2];
return rv;

หากคุณใช้ regex เพื่อ chec คุณสามารถเพิ่มแฟล็ก i เพื่อทำให้ตัวพิมพ์เล็กและตัวพิมพ์ใหญ่นั้นไม่ใช้แทน. toLowerCase () นอกจากนี้ยังไม่จำเป็นต้องใช้วิธีการ. toString ()
— Jake Rowsell

2

ลองสิ่งนี้:

var trident = !!navigator.userAgent.match(/Trident\/7.0/);
var net = !!navigator.userAgent.match(/.NET4.0E/);
var IE11 = trident && net
var IEold = ( navigator.userAgent.match(/MSIE/i) ? true : false );
if(IE11 || IEold){
alert("IE")
}else{
alert("Other")
}

รหัสผิดเนื่องจากเบราว์เซอร์ Acoo ใช้ "MSIE" ใน useragent ดูที่useragentstring.com/pages/Acoo%20Browser
— ผู้ใช้

ARGUMENT ผิด ฉันได้ทำการทดสอบกับเบราว์เซอร์ IE ทั้งหมดแม้กระทั่งอุปกรณ์ Win8 เช่นกัน
— Krunal

คุณทดสอบเบราว์เซอร์ IE11 แต่ไม่ใช่เบราว์เซอร์ Acoo และเบราว์เซอร์ Acoo ใช้ "MSIE" ใน useragent เช่นฉันว่าคุณดังนั้น IEold ยังตรวจจับเบราว์เซอร์ Acoo เป็น IEold (IE เวอร์ชันเก่า) และฉันแน่ใจว่าเบราว์เซอร์ Acoo ใช้ " MSIE "ใน useragent เพราะฉันทำ navigator.userAgent บนไซต์ทดสอบจาวาสคริปต์ด้วยเบราว์เซอร์ Acoo (ไซต์ทดสอบ: w3schools.com )
— ผู้ใช้

คุณช่วยแก้ปัญหานี้ให้ดีขึ้นได้ไหม?
— Krunal

คุณสามารถใช้งานได้!navigator.userAgent.match("Acoo Browser;") && navigator.userAgent.match(/MSIE/i) ? true : falseแต่ไม่สามารถใช้งานได้เสมอเพราะเบราว์เซอร์ acoo ไม่มี "Acoo Browser"; ใน useragent แต่จริงๆแล้วคุณไม่จำเป็นต้องสนใจเบราว์เซอร์ acoo ที่มี "MSIE" ใน useragent เพราะเบราว์เซอร์ acoo เกือบเป็นชื่อเดิม
— ผู้ใช้

1

นี่ดูเหมือนจะเป็นวิธีที่ดีกว่า "indexOf" ส่งคืน -1 ถ้าไม่มีอะไรที่ตรงกัน มันไม่ได้เขียนทับคลาสที่มีอยู่ในร่างกายเพียงเพิ่มเข้าไป

// add a class on the body ie IE 10/11
var uA = navigator.userAgent;
if(uA.indexOf('Trident') != -1 && uA.indexOf('rv:11') != -1){
    document.body.className = document.body.className+' ie11';
}
if(uA.indexOf('Trident') != -1 && uA.indexOf('MSIE 10.0') != -1){
    document.body.className = document.body.className+' ie10';
}

0

ตรวจจับเบราว์เซอร์ส่วนใหญ่ด้วยสิ่งนี้:

var getBrowser = function(){
  var navigatorObj = navigator.appName,
      userAgentObj = navigator.userAgent,
      matchVersion;
  var match = userAgentObj.match(/(opera|chrome|safari|firefox|msie|trident)\/?\s*(\.?\d+(\.\d+)*)/i);
  if( match && (matchVersion = userAgentObj.match(/version\/([\.\d]+)/i)) !== null) match[2] = matchVersion[1];
  //mobile
  if (navigator.userAgent.match(/iPhone|Android|webOS|iPad/i)) {
    return match ? [match[1], match[2], mobile] : [navigatorObj, navigator.appVersion, mobile];
  }
  // web browser
  return match ? [match[1], match[2]] : [navigatorObj, navigator.appVersion, '-?'];
};

https://gist.github.com/earlonrails/5266945


0

ฉันใช้onscrollเหตุการณ์ที่องค์ประกอบด้วยแถบเลื่อน เมื่อถูกทริกเกอร์ใน IE ฉันได้เพิ่มการตรวจสอบต่อไปนี้:

onscroll="if (document.activeElement==this) ignoreHideOptions()"

0

สำหรับเบราว์เซอร์ IE เท่านั้น:

var ie = 'NotIE'; //IE5-11, Edge+
    if( !!document.compatMode ) {
        if( !("ActiveXObject" in window) ) ) ie = 'EDGE';
        if( !!document.uniqueID){
            if('ActiveXObject' in window && !window.createPopup ){ ie = 11; }
            else if(!!document.all){
                    if(!!window.atob){ie = 10;}
                    else if(!!document.addEventListener) {ie = 9;}
                    else if(!!document.querySelector){ie = 8;}
                    else if(!!window.XMLHttpRequest){ie = 7;}
                    else if(!!document.compatMode){ie = 6;}
                    else ie = 5;
                }
        }
    }

ใช้การแจ้งเตือน (เช่น);

การทดสอบ:

var browserVersionExplorer = (function() {
    var ie = '<s>NotIE</s>',
        me = '<s>NotIE</s>';

    if (/msie\s|trident\/|edge\//i.test(window.navigator.userAgent) && !!(document.documentMode || document.uniqueID || window.ActiveXObject || window.MSInputMethodContext)) {
            if (!!window.MSInputMethodContext) {
                ie = !("ActiveXObject" in window) ? 'EDGE' : 11;
            } else if (!!document.uniqueID) {
                if (!!(window.ActiveXObject && document.all)) {
                    if (document.compatMode == "CSS1Compat" && !!window.DOMParser ) {
                        ie = !!window.XMLHttpRequest ? 7 : 6;
                    } else {
                        ie = !!(window.createPopup && document.getElementById) ? parseFloat('5.5') : 5;
                    }
                    if (!!document.documentMode && !!document.querySelector ) {
                        ie = !!(window.atob && window.matchMedia) ? 10 : ( !!document.addEventListener ? 9 : 8);
                    }
                } else ie = !!document.all ? 4 : (!!window.navigator ? 3 : 2);
            }
        }
        
    return ie > 1 ? 'IE ' + ie : ie;
})();

 alert(browserVersionExplorer);

อัปเดต 1 มิถุนายน 2560

ตอนนี้เราสามารถใช้บางสิ่งได้ง่ายขึ้นและง่ายขึ้น:

var uA = window.navigator.userAgent,
    onlyIEorEdge = /msie\s|trident\/|edge\//i.test(uA) && !!( document.uniqueID || window.MSInputMethodContext),
    checkVersion = (onlyIEorEdge && +(/(edge\/|rv:|msie\s)([\d.]+)/i.exec(uA)[2])) || NaN;

ฉันจะหาวัตถุมาตรฐานสากลใหม่ที่เพิ่มเข้าไปใน Edge รุ่นใหม่ได้ที่ไหน ฉันอนุมาน Math.acosh เป็นหนึ่งในนั้น
— j4v1

1
@ j4v1 Math.acosh รองรับเฉพาะใน Microsoft Edge (เบราว์เซอร์ Edge) Ref: msdn.microsoft.com/en-us/en-en/library/dn858239(v=vs.94).aspx
— James Peter

วิธีนี้หยุดทำงานสำหรับฉัน ในอดีตมันตรวจพบ IE11 อย่างถูกต้อง แต่ตอนนี้ฉันมี Internet Explorer รุ่น 11.1198.14393.0 (อัปเดตเวอร์ชัน 11.0.42 (KB4018271)) ที่ทำงานบน Windows 10 Enterprise (รุ่น 1607, OS Build 14393.1198) คณิตศาสตร์ดูเหมือนว่าจะสนับสนุนวิธี acosh
— Thijs

@Thijs ใน Windows 10 Education ที่มี IE11 v 11.1198.14393.0 ฉันทำการทดสอบสำเร็จแล้ว คุณควรลองฟังก์ชันคณิตศาสตร์อื่นตาม ES6
— James Peter

@JamesPeter ฉันได้ลงจอดเพื่อตรวจสอบ document.documentMode ดูเหมือนว่าจะเป็นคุณสมบัติที่เชื่อถือได้มากกว่าเพื่อตรวจสอบ IE11 หรือ Edge documentMode มีอยู่ใน IE11 แต่ไม่มีอยู่ใน Edge อีกต่อไป
— Thijs

0

ค่อนข้างตรงไปตรงมาฉันจะใช้ห้องสมุดที่ทำสิ่งที่คุณต้องการ (เช่น platform.js ตัวอย่าง) ในบางสิ่งจะมีการเปลี่ยนแปลงและห้องสมุดจะพร้อมสำหรับการเปลี่ยนแปลงเหล่านั้นและการวิเคราะห์คำด้วยตนเองโดยใช้นิพจน์ทั่วไปจะล้มเหลว

ขอบคุณพระเจ้า IE จากไป ...

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.