Обнаружить, если какой-либо вид IE (MSIE)
Я не хочу разрешать пользователям доступ к моему сайту с помощью Microsoft Internetexplorer (ЛЮБАЯ ВЕРСИЯ).
До сих пор я обнаружил, является ли это более низкой или равной версией 10.
Очень неприятная вещь: Internetexplorer >v10 не может быть InternetExplorer.
Что я нашел и попробовал до сих пор:
if(navigator.appVersion.indexOf("MSIE")!=-1){
alert("You use IE. That´s no good.");
}
или же
if ( $.browser.msie ) {
alert( $.browser.version );
}
а также
http://msdn.microsoft.com/en-us/library/ie/ms537509%28v=vs.85%29.aspx
Я бы использовал любое решение, если оно есть в javascript, jquery или php, если оно есть.
6 ответов
Это работает для меня, чтобы обнаружить любую версию IE 5-11 (Internet Explorer) (Aug / 05/2014):
if (navigator.appName == 'Microsoft Internet Explorer' || !!(navigator.userAgent.match(/Trident/) || navigator.userAgent.match(/rv:11/)) || (typeof $.browser !== "undefined" && $.browser.msie == 1))
{
alert("Please dont use IE.");
}
Это связано с тем, что каждый выпуск Internet Explorer обновляет строку агента пользователя.
MSIE
токены были удалены в Internet Explorer 11 и $.browser
использования navigator.userAgent
определить платформу и удалить ее в jQuery 1.9.
Вы можете использовать следующий код, чтобы определить браузер с чистым java-скриптом.
var isIE = !!navigator.userAgent.match(/Trident/g) || !!navigator.userAgent.match(/MSIE/g);
if(isIE){
alert("IE");
}
else{
alert("Not IE");
}
Спасибо!
Если вы не заинтересованы в том, какая версия, т. е. пользователь в данный момент использует, вы можете попробовать заставить его работать, обнаруживая, поддерживает ли браузер Conditional Compilation Statements
http://msdn.microsoft.com/en-us/library/7kx09ct1%28v=vs.80%29.aspx
if(/*@cc_on!@*/false)
{
// You use IE. That´s no good.
alert("oh my god");
}
Вы можете использовать условную компиляцию, например,
<script>
var isIE = false;
/*@cc_on isIE = true; @*/
</script>
Но обратите внимание, что IE11 не видит этого в режиме стандартов. Обнюхивание пользовательского агента, как правило, плохая идея, но, поскольку IE становится все более совместимым со стандартами, его также становится все труднее обнаружить (надеюсь, это также означает меньшую необходимость)
Для IE> 10, который в настоящее время является IE 11, пользовательский агент несет что-то в заголовках HTTP-запросов браузера
Mozilla / 5.0 (Windows NT 6.3; WOW64; Trident / 7.0; rv: 11.0), как Gecko
Вы можете поставить галочку на "rv: 11.0" для версии 11. Дайте мне знать, если вам нужен код для этого.
Я нашел (может быть, в SO) в прошлом этот скрипт, и он работал для меня (IE 10 тоже)
<![if IE]>
<script type='text/javascript'>
if(/*@cc_on!@*/false)
var bIsIE = 1;
</script>
<![endif]>
а потом
if (typeof (bIsIE) != 'undefined')
{
//IE :(
}
else
{
//NOT IE :)
}