Что лучший способ состоит в том, чтобы обнаружить Internet Explorer 6 с помощью JavaScript?

Что лучший способ состоит в том, чтобы обнаружить Internet Explorer 6 с помощью JavaScript?

If browser == IE6 {
    alert('hi');
}
17
задан Peter Mortensen 22 November 2011 в 18:22
поделиться

7 ответов

Вы спрашиваете, как быстро разрабатывать веб-приложения с помощью корпоративных рамок по сравнению с RoR.

Мой первоначальный ответ: вы не можете ожидать разработки веб-приложений в .NET/( Spring/Hiberbnate), как для RoR. Намного больше настроек, гораздо больше, чтобы узнать и понять на более глубоком уровне. Много конфигураций.

Я не вижу php здесь. Я предполагаю, что гораздо больше людей используют php. Почему бы не посмотреть на php и симфонию. Symfony выводит свои основы из RoR.

Если ни одно из вышеперечисленного не подходит для счета, я бы пошел на Spring/Hibernate/MySQL/Tomcat. Мы разработали несколько крупномасштабных веб-приложений с этим стеком в гибкой Scrum/Sprint scenerio

-121--4293881-

Я согласен с fbrereto.

Если в конструкторе возникает ошибка, эквивалентная выражению «построение этого объекта не работало» или «объект не мог быть создан», и поэтому необходимо обработать этот факт - я бы сделал это только для неустранимых ошибок, для которых объект нельзя использовать иначе, например, не удалось открыть файл, который мы ожидали открыть в классе MySetticeReader.

-121--4631726-

Условные комментарии являются хорошей альтернативой:

<!--[if IE 6]>
<script>
var everythingIsBroken = true;
</script>
<![endif]-->

Edit : Если вы все еще ищете поддержку IE 6 в 2017 или после... Ну, мое сердце выходит к тебе. Ответ на этот вопрос в 2017 году действительно не стоит беспокоиться об ИС 6. Это больше не поддерживаемый браузер. Любая операционная система, которая может запускать этот браузер и сам браузер, больше не получает обновлений безопасности. Это означает, что пользователи, использующие это программное обеспечение, подвергаются большому риску эксплуатации. Это большая проблема для людей, которые не могут позволить себе обновление.

32
ответ дан 30 November 2019 в 10:03
поделиться

Какой лучший способ обнаружить <броузер_x> с помощью JavaScript?

Ни в коем случае.

Как упоминал Эндрю Мур в комментариях в этой заметке, вы должны использовать обнаружение возможностей. Это сделает ваш код более "перспективным". Если другой браузер включит или больше не будет поддерживать какую-либо функцию в будущем, то ваш код будет в безопасности. Существует ряд сайтов, объясняющих, как с этим справиться. Концепция огромна и охватывает множество концепций, так что вместо того, чтобы писать сочинение/книгу по этому поводу, вот некоторые ресурсы для использования:

1
ответ дан 30 November 2019 в 10:03
поделиться

Я не уверен, есть ли какая-то особая причина, по которой вы хотите обнаружить IE 6, но в целом, лучше попытаться обнаружить возможности браузера, чем обнаруживать его. Это легко сделать с помощью JQuery, используя jQuery.support: http://api.jquery.com/jQuery.support/.

0
ответ дан 30 November 2019 в 10:03
поделиться
  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

6
ответ дан 30 November 2019 в 10:03
поделиться

Не основывайте свое обнаружение на пользовательском агенте. Есть много других браузеров, которые используют движок Trident 4 (тот, который использует IE6), но не IE6.

Ответ прост: не обнаруживать браузер , обнаруживать движок . Для этого вы должны использовать так называемое обнаружение на основе функций .


Использование обнаружения на основе функций имеет следующие преимущества:

  • Обнаруживает все браузеры, использующие механизм визуализации, аналогичный целевому.
  • Более легкое ветвление кода для решения проблем механизма рендеринга.
  • Меньше ложных срабатываний (UA могут быть изменены для передачи в качестве другого браузера, функции - нет).

Следующий скрипт использует функции браузера для обнаружения движка. Благодарим производственную группу MooTools ( http://mootools.net/developers/ ).

Примечание: Приведенный ниже фрагмент был изменен для работы без фреймворка javascript MooTools . Если вы действительно хотите работать с 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);
}
5
ответ дан 30 November 2019 в 10:03
поделиться

Рискуя не ответить на заданный вопрос (и предположив на мгновение, что у спрашивающего есть веская причина специально обнаружить IE6):

if (/\bMSIE 6/.test(navigator.userAgent) && !window.opera) {
  // yep, browser claims to be IE6
}
27
ответ дан 30 November 2019 в 10:03
поделиться

Очень позднее добавление.

В дополнение к условным комментариям HTML, используемым в ответе аппхакера , реализация Microsoft JScript также предоставляет условные комментарии для JavaScript :

<script type="text/javascript">
    var isIE6 = /*@cc_on/*@if(@_jscript_version<=5.6)1@else@*/0/*@end@*/;

    if (isIE6) {
        alert("You're screwed");
    }
</script>

Хорошая новость в том, что что его также можно использовать во внешних файлах JavaScript ( .js ).

Для таблицы, в которой перечислены версии JScript, которые реализуются хост-приложениями Microsoft: Информация о версии JavaScript

2
ответ дан 30 November 2019 в 10:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: