简化 if 语句条件以包含 <= 语句



设法使用11年前别人的问题(如何检测浏览器的版本?)的答案来检索正在使用的浏览器名称和版本,并将其绑定到if语句中,以显示过时浏览器的警告消息(我的if语句复制在下面)。

我想知道的是,是否有一种更简单的方法来标记版本<= Safari 12,以便Safari 11, 10, 9等将被检测到,而不是一个接一个地做字符串或||条件。

if (navigator.sayswho === 'Safari 12' || navigator.sayswho === 'Safari 11' || navigator.sayswho === 'Safari 10' || navigator.sayswho === 'Safari 9') {
alert('Your browser ('+ navigator.sayswho +') is out of date, some features of our website may not work with your browser version.rn Please update your browser to ensure compatibility with our online product forms.rnrn');
}

它可以工作,但我正在努力学习如何使它更优雅和精简代码。感谢您提供的任何意见。在过去的一年里,Stackoverflow使我的开发和网站管理之旅变得更加富有成效和愉快。欢呼声。

正则表达式测试就可以了。

if (/Safari (?:12|11|10|9)/.test(navigator.sayswho)) {

另一种方法是匹配后面的数字,然后检查它们是否在范围内。

const match = navigator.sayswho.match(/Safari (d+)/);
const num = match ? Number(match[1]) : 0;
if (num <= 12 && num > 9) {

我建议将检查改为:

const browser_list = [
'Safari 12',
'Safari 11',
'Safari 10',
'Safari 9'
];
if (browser_list.includes(navigator.sayswho)) {
// etc.
}

这是可读的,可维护的,并且可以很容易地改变在未来的新浏览器和版本。

最新更新