Каков наилучший способ обнаружения Internet Explorer 6 с помощью JavaScript?
If browser == IE6 {
alert('hi');
}
Каков наилучший способ обнаружения Internet Explorer 6 с помощью JavaScript?
If browser == IE6 {
alert('hi');
}
Условные комментарии - хорошая альтернатива:
<!--[if IE 6]>
<script>
var everythingIsBroken = true;
</script>
<![endif]-->
Изменить. Если вы все еще ищете поддержку IE 6 в 2017 году или после... хорошо, мое сердце уходит к вам. Ответ на этот вопрос в 2017 году действительно не стоит беспокоиться о IE 6. Это не поддерживаемый браузер. Любая операционная система, которая может запускать этот браузер и сам браузер, больше не получает обновлений безопасности. Это означает, что пользователи, использующие это программное обеспечение, подвергаются большому риску использования. Это большая проблема для людей, которые не могут позволить себе модернизировать.
рискуя ответить на вопрос, который был задан (и на мгновение, у которого есть вопрос, у которого есть хорошая причина специально определить IE6):
if (/\bMSIE 6/.test(navigator.userAgent) && !window.opera) {
// yep, browser claims to be IE6
}
var ua = window.navigator.userAgent;
var msie = ua.indexOf ( "MSIE " );
if ( msie > 0 ) // If Internet Explorer, return version number
return parseInt (ua.substring (msie+5, ua.indexOf (".", msie )));
else // If another browser, return 0
return 0;
Источник: http://support.microsoft.com/kb/167820
Не основывайте свое обнаружение на пользовательском агенте. Существует множество других браузеров, в которых используется движок Trident 4 (один из IE6), которые не являются IE6.
Ответ прост: не обнаруживает браузер, обнаруживает двигатель. Чтобы сделать это, вы должны использовать то, что называется функцией обнаружения на основе.
Использование обнаружения на основе функций имеет следующие преимущества:
Следующий script использует функции браузера для обнаружения движка. Кредит для производственной команды MooTools (http://mootools.net/developers/).
Примечание. Ниже приведен фрагмент ниже для работы без рамки MooTools javascript. Если вы хотите работать с MooTools, вам больше не нужен этот код, он является частью дистрибутива.
function $tryCatch(){
for (var i = 0, l = arguments.length; i < l; i++){
try {
return arguments[i]();
} catch(e){}
}
return null;
};
var Browser = {
Engine: {name: 'unknown', version: 0},
Platform: {name: (window.orientation != undefined) ? 'ipod' : (navigator.platform.match(/mac|win|linux/i) || ['other'])[0].toLowerCase()},
Features: {xpath: !!(document.evaluate), air: !!(window.runtime), query: !!(document.querySelector)},
Plugins: {},
Engines: {
presto: function(){
return (!window.opera) ? false : ((arguments.callee.caller) ? 960 : ((document.getElementsByClassName) ? 950 : 925));
},
trident: function(){
return (!window.ActiveXObject) ? false : ((window.XMLHttpRequest) ? ((document.querySelectorAll) ? 6 : 5) : 4);
},
webkit: function(){
return (navigator.taintEnabled) ? false : ((Browser.Features.xpath) ? ((Browser.Features.query) ? 525 : 420) : 419);
},
gecko: function(){
return (!document.getBoxObjectFor && window.mozInnerScreenX == null) ? false : ((document.getElementsByClassName) ? 19 : 18);
}
}
};
Browser.Platform[Browser.Platform.name] = true;
Browser.detect = function(){
for (var engine in this.Engines){
var version = this.Engines[engine]();
if (version){
this.Engine = {name: engine, version: version};
this.Engine[engine] = this.Engine[engine + version] = true;
break;
}
}
return {name: engine, version: version};
};
Browser.detect();
Browser.Request = function(){
return $tryCatch(function(){
return new XMLHttpRequest();
}, function(){
return new ActiveXObject('MSXML2.XMLHTTP');
}, function(){
return new ActiveXObject('Microsoft.XMLHTTP');
});
};
Browser.Features.xhr = !!(Browser.Request());
Browser.Plugins.Flash = (function(){
var version = ($tryCatch(function(){
return navigator.plugins['Shockwave Flash'].description;
}, function(){
return new ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version');
}) || '0 r0').match(/\d+/g);
return {version: parseInt(version[0] || 0 + '.' + version[1], 10) || 0, build: parseInt(version[2], 10) || 0};
})();
function $exec(text){
if (!text) return text;
if (window.execScript){
window.execScript(text);
} else {
var script = document.createElement('script');
script.setAttribute('type', 'text/javascript');
script[(Browser.Engine.webkit && Browser.Engine.version < 420) ? 'innerText' : 'text'] = text;
document.head.appendChild(script);
document.head.removeChild(script);
}
return text;
};
Просто включите этот класс JavaScript, и вы можете обнаружить IE6 и любой другой браузер, используя движок Trident4, выполнив следующие действия:
if(Browser.Engine.trident4) {
alert('IE6 or similar...');
} elseif(Browser.Engine.name == "trident") {
alert('Internet Explorer Trident Rendering Engine Version ' + Browser.Engine.version);
}
Самый надежный способ сделать это - использовать условные комментарии, как упоминается @apphacker. Однако то, что, как представляется, менее известно, заключается в том, что условные комментарии могут использоваться в JavaScript:
var div = document.createElement("div");
div.innerHTML = "<!--[if IE 6]><i></i><![endif]-->";
var isIe6 = (div.getElementsByTagName("i").length == 1);
alert("Is IE 6: " + isIe6);
Очень позднее дополнение.
В дополнение к условным комментариям HTML, используемым в ответе apphacker, Microsoft JScript также предоставляет условные комментарии для JavaScript:
<script type="text/javascript">
var isIE6 = /*@cc_on/*@if(@_jscript_version<=5.6)[email protected]@*/0/*@[email protected]*/;
if (isIE6) {
alert("You're screwed");
}
</script>
Хорошо, что он также может использоваться во внешних файлах JavaScript (.js
).
В таблице перечислены версии JScript, которые реализованы приложениями Microsoft: Информация о версии JavaScript
Каков наилучший способ обнаружения <browser_x > используя JavaScript?
Не.
Как сказал Эндрю Мур в комментариях к этому сообщению, вы должны использовать функцию обнаружения. Это сделает ваш код более "надежным". Если другой браузер включает или больше не поддерживает функцию в будущем, тогда ваш код будет в безопасности. Есть несколько сайтов, объясняющих, как с этим справиться. Концепция огромна и охватывает множество концепций, поэтому вместо того, чтобы писать эссе/книгу об этом, вот некоторые ресурсы для использования:
Я не уверен, есть ли особая причина, по которой вы хотите обнаружить IE 6, но в целом лучше попытаться обнаружить функции браузера, а не обнаруживать браузер. Вы можете сделать это легко с помощью JQuery, используя jQuery.support: http://api.jquery.com/jQuery.support/.
<!--[if (IE 6)|(IE 7)]>
<script>
alert("Lesser browser detected!");
</script>
<![endif]-->