Определить, если IE <11 надежно - PullRequest
1 голос
/ 04 апреля 2019

Существует ли надежный метод определения версии браузера IE? До сих пор я пытался.

  • IE Условные комментарии, не надежны
  • Заголовок HTTP-запроса агента пользователя, не всегда установлен

Мой следующий вариант - попробовать javascript с чем-то вроде

var nVer = navigator.appVersion;
var nAgt = navigator.userAgent;
var browserName  = navigator.appName;
var fullVersion  = ''+parseFloat(navigator.appVersion); 
var majorVersion = parseInt(navigator.appVersion,10);

Но будет ли javascript всегда иметь доступ к этой информации?

Ответы [ 2 ]

0 голосов
/ 05 апреля 2019

Вы можете попытаться обратиться к приведенному ниже примеру кода, который может идентифицировать версии IE7, IE8, IE9, IE10, IE11.

<!DOCTYPE html>
<html>
<head>
	<title>Page Title</title>
	<script>
	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) 
   alert("This is IE " + GetIEVersion());
else 
   alert("This is not IE.");
GetIEVersion();
	</script>
</head>
<body>



</body>
</html>

Далее, вы можете попробовать изменить этот код в соответствии с вашими требованиями.

0 голосов
/ 04 апреля 2019

Одной из основных функций (хотя и плохо реализованных), существующих в IE11 и не в более ранних версиях, является const.Таким образом, вы можете просто создать переменную const в eval и посмотреть, не выдана ли ошибка.

function isIE11() {
  try {
    eval("const x = 1;");
    return true;
  } catch (err) {}
  return false;
}
console.log(isIE11());
...