jQuery - определение операционной системы и версии операционной системы - PullRequest
6 голосов
/ 08 января 2012

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

На странице установки я хотел бы определить, какую версию браузера и ОС / ОС они используют, чтобы я мог выделить наиболее релевантные инструкции чуть темнее остальных или просто не отображать ненужные разделы.

Например, для IE6 вы должны использовать Trixie (я полагаю) для установки пользовательских скриптов, и это поддерживается только в Win XP. IE7 поддерживается в Win XP, IE8 поддерживается в Win XP и Win 7, а IE9 поддерживается только в Win 7. Для IE7, 8 и 9 я советую использовать IEPro. Разница между Trixie и IEPro заключается в том, что Trixie требует расширение файла .user.js, которое необходимо сохранить в C: / Program Files / bhelpuri. IEPro, с другой стороны, требует, чтобы расширение было .ieuser и сохранялось в другом месте. Для IE, в частности, я хотел бы определить версию и отобразить только правильную ссылку (.user.js или .ieuser, в зависимости от того, какой плагин они должны использовать для своего текущего браузера), чтобы они перешли на правильную версию файла для этого браузера с правильным путем сохранения для этой версии ОС / ОС. Это имеет какой-то смысл до сих пор?

По сути, мой вопрос: кто-нибудь знает способ определения версии операционной системы? В настоящее время я использую http://www.stoimen.com/blog/2009/07/04/jquery-os-detection/, но это не дает версию ОС, только ОС. Я попытался перебрать все переменные, хранящиеся в объекте навигатора, но безуспешно. Любая помощь будет принята с благодарностью.

Редактировать: Благодаря ответу Нейтса, я поставил точный код на http://jsfiddle.net/Mu8r5/1/. Надеюсь, это поможет кому-то в будущем.

Ответы [ 3 ]

23 голосов
/ 08 января 2012

Лучше всего использовать свойство navigator.userAgent. Это даст номер версии Windows. Вы можете увидеть таблицу того, как номер версии Windows отображается на ОС здесь:

OSVERSIONINFO

Вот пример кода обнаружения:

var os = (function() {
    var ua = navigator.userAgent.toLowerCase();
    return {
        isWin2K: /windows nt 5.0/.test(ua),
        isXP: /windows nt 5.1/.test(ua),
        isVista: /windows nt 6.0/.test(ua),
        isWin7: /windows nt 6.1/.test(ua),
        isWin8: /windows nt 6.2/.test(ua),
        isWin81: /windows nt 6.3/.test(ua)
    };
}());

if(os.isWin7) {
    ...
}

http://jsfiddle.net/45jEc/

5 голосов
/ 08 января 2012

Вы можете использовать эту замечательную библиотеку javascript: http://www.visitorjs.com/details Она недавно была открыта

Изменить: На самом деле, теперь он переименован в session.js http://github.com/codejoust/session.js и, насколько мне известно, это лучшее, что вы можете получить.

1 голос
/ 08 января 2012

Вопрос переполнения стека Определение точной версии ОС из браузера содержит некоторые интересные сведения о получении версии ОС из заголовка User-Agent, который, как я считаю, содержит ту же информацию, к которой можно получить доступ из JavaScript.

...