我需要检查并比较过时的浏览器版本。如果用户的浏览器版本低于定义的(< =)版本号,则应该出现一条消息,告诉用户更新他/她的浏览器。该版本在我的html中的以下数组中定义。
<script type="text/javascript" language="javascript">
var browserarr = {Name:"Chrome", ChromeVersion:52, URL:"http://www.google.com",
Name:"Firefox", FirefoxVersion:40, URL:"http://www.firefox.com",
Name:"Safari", SafariVersion:10, URL:""
};
</script>
我的逻辑是使用if语句对其进行编码,但我想采用另一种方式来执行此操作以便我可以获取浏览器系列(chrome,firefox或IE),然后使用相应的过时版本和URL来更新浏览器。它应该是动态的,所以我只需要在我的数组中添加一个新行,指定一个新的浏览器来进行javascript中的比较。
检查浏览器
detectJS: function () {
b = detect.parse(navigator.userAgent);
if (b.browser.family === 'Chrome' && b.browser.major <= browserarr["ChromeVersion"]) {
document.getElementById('browserNotificationDiv').style.display = "block";
var url = 'google.com';
//document.getElementById("msgURL").innerHTML = browserarr["URL"];
}
if (b.browser.family === 'IE' && b.browser.major <= 9) {
document.getElementById('browserNotificationDiv').style.display = "block";
var url = 'ie.com';
}
if (b.browser.family === 'Safari' && b.browser.major <= browserarr["SafariVersion"]) {
document.getElementById('browserNotificationDiv').style.display = "block";
var url = 'safari.com';
}
if (b.browser.family === 'Firefox' && b.browser.major <= browserarr["FirefoxVersion"]) {
document.getElementById('browserNotificationDiv').style.display = "block";
var url = 'firefox.com';
}
browserDetect.displayInfo(
'Your current browser ' + b.browser.family + ' version ' + b.browser.major +' is outdated. </br>' +
'Please download the latest version by going to: ' + url + ' ' + '<a href="'+browserarr["URL"]+'">link</a>' +'</br>'
);
},
我该怎么办?
答案 0 :(得分:0)
有一个小部件可以完全满足您的要求,您可以在此配置要标记为过时的版本:
https://updatemybrowser.org/widget.html
但就您当前的代码而言。我会改变你的浏览器对象,使其结构更像:
var browserList = {
"chrome" : {
acceptedVersion: 52,
downloadUrl: "https://www.google.com"
},
"firefox" : {
acceptedVersion: 40,
downloadUrl: "https://www.firefox.com"
},
"safari" : {
acceptedVersion: 10,
downloadUrl: "https://www.apple.com"
}
}
然后在你的代码中,你可以有一个switch语句,用于比较浏览器名称(小写以使其更容易),然后在该switch子句中使用if语句检查接受的版本并对其进行适当的操作。
var broswerName = b.browser.family.toLowerCase();
switch(broswerName) {
case 'chrome':
if(broswerList[broswerName].acceptedVersion > b.browser.major) {
//browser is outdated
}
break;
case 'firefox':
if(broswerList[broswerName].acceptedVersion > b.browser.major) {
//browser is outdated
}
break;
}