วิธีการตรวจสอบ 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.