我正在尝试检测网络应用程序的浏览器和浏览器版本
判断浏览器的代码是-
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:
}
警报表明浏览器是 ie,版本是 11,但我从未看到模式被显示。如果我在 ie 的 case 语句中添加警报,它也永远不会显示。我错过了什么?
最佳答案
您遇到了多个问题。
return 'IE ' + (tem[1] || '');
在浏览器中检查不会给您提供与区分大小写的 switch 语句中的“ie”相匹配的内容。
另一个问题是browser_version < 9
如果版本为 11,则不会评估为 true。
关于Javascript Switch 语句未提供正确的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27023166/