文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Javascript怎么识别Windows操作系统各个版本

2024-04-02 19:55

关注

今天小编给大家分享一下Javascript怎么识别Windows操作系统各个版本的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

在Windows平台下,还可以从用户代理字符串中进一步取得具体的操作系统信息。在Windows XP之前,Windows有两种版本,分别针对家庭用户和商业用户。针对家庭用户的版本分别是Windows 95、98和Windows ME。而针对商业用户的版本则一直叫做Window NT,最后由于市场原因改名为Windows2000。这两个产品线后来又合并成一个由Windows NT发展而来的公共的代码基,代表产品就是Windows XP。随后,微软在Windows XP基础上又构建了Windows Vista。

只有了解这些信息,才能搞清楚用户代理字符串中Windows操作系统的具体版本。下表列出了不同浏览器在表示不同的Windows操作系统时给出的不同字符串。

windows版本 IE4+ Gecko Opera<7 0pera7+ WebKit

95 " Windows 95" "Win95" "Windows 95" "Windows 95 n/a

98 "Windows 98" "Win98" Windows 98" "Windows 98" n/a

NT 4.0 "Windows NT" "WinNT4.O" "Windows NT 4.O" "Windows NT 4.0" n/a

2000 "Windows NT 5.0" "Windows NT 5.O" "Windows 2000" "Windows NT 5.O" n/a

IE "Win 9x 4.90" "Win 9x 4.90" "Windows ME" "Win 9x 4.90" n/a

XP "Windows NT 5.1" "Windows NT 5.1" "Windows XP" "Windows NT 5.1" "Windows NT 5.1"

Vista "Windows NT 6.0" "Windows NT 6.0" n/a "Windows NT 6.0" "Windows NT 6.0"

由于用户代理字符串中的Windows操作系统版本表示方法各异,因此检测代码并不十分直观。好在,从Windows 2000开始,表示操作系统的字符串大部分都还相同,只有版本号有变化。为了检测不同的Windows操作系统,必须要使用正则表达式。由于使用Opera 7之前版本的用户已经不多了,因此我们可以忽略这部分浏览器。

第一步就是匹配Windows 95和Windows 98这两个字符串。对这两个字符串,只有Gecko与其他浏览器不同,即没有"dows",而且"Win"与版本号之间没有空格。要匹配这个模式,可以使用下面这个简单的正则表达式:

/Win(?:dows)?([^do](2))/

这个正则表达式中的捕获组会返回操作系统的版本。由于版本可能是任何两个字符编码(例如95、98,9x、NT、ME及XP),因此要使用两个非空格字符。

Gecko在表示Windows NT时会在末尾添加"4.O",与其查找实际的字符串,不如像下面这样查找小数值更合适:

/Win(?:dows)?([^do](2))(d+.d+)?/

这样,正则表达式中就包含了第二个捕获组,用于取得NT的版本号。由于该版本号对于Windows95和Windows 98而言是不存在的,所以必须设置为可选。这个模式与Opera表示Windows NT的字符串之间唯一的区别,就是"NT"与“4.o"之间的空格,这在模式中很容易添加:

/Win(?:dows)?([^do](2))87(d+.d+)?/

经过一番修改之后,这个正则表达式也可以成功地匹配Windows ME、Windows XP和WindowsVista的字符串了。具体来说,第一个捕获组将会匹配95、98、9x、NT、ME或XP。第二个捕获组则只针对Windows ME及所有Windows NT的变体。这个信息可以作为具体的操作系统信息保存在

system.win属性中,如下所示:

if (system.win){

if (/Win(?:dows)?([^do]{2})s?(d+.d+)?/.test (ua)){

if (RegExp["$1"]=="NT"){

switch (RegExp["$2"]){

case "5.0":

system.win="2000";

break;

case "5.1":

system.win= "XP";

break:

case "6.0":

system.win="Vista";

break:

default:

system.win="NT";

break;

} else if (RegExp["$1"]==“9x"){

system.win="ME";

} else{

system.win=RegExp["$1"];

)

)

}

如果system.win的值为true,那么就使用这个正则表达式从用户代理字符串中提取具体的信息。鉴于Windows将来的某个版本也许不能使用这个方法来检测,所以第一步应该先检测用户代理字符串是否与这个模式匹配。在模式匹配的情况下,第一个捕获组中可能会包含"95"、"98"、"9x"或"NT"。如果这个值是"NT",可以将system.win设置为相应操作系统的字符串;如果是n9x",那么system.win就要设置成"ME";如果是其他值,则将所捕获的值直接赋给sys七em.win。有了这些检测平台的代码后,我们就可以编写如下代码:

if(client.system.win){

if(client.system.win=="XP") {

//说明是XP

} else if (client.system .win=="Vista"){

//说明是Vista

}

}

由于非空字符串会转换为布尔值true,因此可以将client.system.win作为布尔值用在if语句中。而在需要更多有关操作系统的信息时,则可以使用其中保存的字符串值。

以上就是“Javascript怎么识别Windows操作系统各个版本”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-人工智能
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯