2014-11-19 2 views
0

Я пытаюсь обнаружить браузер и версию браузера для веб-приложенияJavascript заявление переключателя не обеспечивает правильный результат

код для определения -браузера -

function get_browser() { 
    var ua = navigator.userAgent, tem, M = ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || []; 
    if (/trident/i.test(M[1])) { 
     tem = /\brv[ :]+(\d+)/g.exec(ua) || []; 
     return 'IE ' + (tem[1] || ''); 
    } 
    if (M[1] === 'Chrome') { 
     tem = ua.match(/\bOPR\/(\d+)/) 
     if (tem != null) { return 'Opera ' + tem[1]; } 
    } 
    M = M[2] ? [M[1], M[2]] : [navigator.appName, navigator.appVersion, '-?']; 
    if ((tem = ua.match(/version\/(\d+)/i)) != null) { M.splice(1, 1, tem[1]); } 
    return M[0]; 
} 

код для определения версии это -

function get_browser_version() { 
    var ua = navigator.userAgent, tem, M = ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || []; 
    if (/trident/i.test(M[1])) { 
     tem = /\brv[ :]+(\d+)/g.exec(ua) || []; 
     return 'IE ' + (tem[1] || ''); 
    } 
    if (M[1] === 'Chrome') { 
     tem = ua.match(/\bOPR\/(\d+)/) 
     if (tem != null) { return 'Opera ' + tem[1]; } 
    } 
    M = M[2] ? [M[1], M[2]] : [navigator.appName, navigator.appVersion, '-?']; 
    if ((tem = ua.match(/version\/(\d+)/i)) != null) { M.splice(1, 1, tem[1]); } 
    return M[1]; 
} 

остальная часть кода -

var browser = get_browser().toLowerCase(); 
var browser_version = get_browser_version(); 

alert(browser, browser_version); 

switch (browser) { 
    case 'safari': 
     if (browser_version < 5) { 
      $('#BrowserVersionModal').modal('show'); 
     } 
     break; 
    case 'firefox': 
     if (browser_version < 28) { 
      $('#BrowserVersionModal').modal('show'); 
     } 
     break; 
    case 'ie': 
     if (browser_version < 9) { 
      $('#BrowserVersionModal').modal('show'); 
     } 
     break; 
    case 'opera': 
     if (browser_version < 6) { 
      $('#BrowserVersionModal').modal('show'); 
     } 
     break; 
    default: 

} 

Предупреждение указывает, что браузер является то есть, а версия - 11, но я никогда не вижу отображаемого мода. Если я добавлю предупреждение в оператор case, т. Е. Он никогда не будет показан. Что мне не хватает?

+6

может быть, потому что 11 не меньше, чем 9? –

+0

Если я поставил предупреждение перед проверкой номера версии, оно все равно не отображается. Я также попытался изменить менее чем на 12 и до сих пор не модально. – Craig

+0

Все лежат ... –

ответ

2

У вас есть несколько вопросов здесь.

return 'IE ' + (tem[1] || ''); в проверке браузера не дает вам что-то, что будет соответствовать «ie» в аргументе оператора, чувствительного к регистру.

Другой вопрос заключается в том, что browser_version < 9 не будет оценивать истинное значение, если версия 11.

+0

Это фактически привело меня к проблеме. Функция Get_Browser и Get_Browser_Version возвращали браузер и версию для IE. – Craig

0

С

case 'ie': 
    if (browser_version < 9) { 
     $('#BrowserVersionModal').modal('show'); 
    } 
    break; 

вы говорите, - если это IE и менее 9 - так то 11 не срабатывает, потому что> 9

0

Я думаю потому, что версия 11, условие if (browser_version < 9) будет ложным, поэтому модальное изображение не будет отображаться.

0

Попробуйте следовать;

var versions = { 
    ie: 9, 
    opera: 6, 
    firefox: 28, 
    safari: 5 
}; 

if(!versions[browser]) { 
    alert('Unknown browser: '+browser); 
} else if (browser_version < versions[browser]) { 
    alert('poor browser'); 
} else { 
    alert('good browser'); 
} 
Смежные вопросы