给 Valine 评论添加 macOS 系统版本号信息

28-11-2021
最近更新于:2022-06-15 23:33:49

macOS 系统版本号

很久没写过valine的东西了(一些小改动就懒得写直接记日记里里)不过最近也是淘了个14年中的顶配2.8ghz定制款mbp(有logo灯,便宜),所以借性来把valine评论的客户端显示完善一下,主要针对macos系统用户新增了系统版本号高于10.12.6(macOS Sierra)客户端的代理判断,低于该系统版本号的就不输出了(也可以把其他版本号加到对象),具体样式如下图所示

我目前还是用的Catalina(10.15.7)

Valine 配置

如上图所示,符合macos的客户端会自动判断输出对应的版本号到useragent末端,现在来简单看下这个判断函数,首先是定义所需的版本号,具体版本在苹果官网可查,Find out which macOS your Mac is using

定位到 valine.js 中的 s=d(s) 后添加代码如下,

    const new_vertion = '12.01',  //目前最新的版本号
    macOSver = [{
        "slug": "Monterey",
        "ver": "11.6.1"
    }, {
        "slug": "Big Sur",
        "ver": "10.15.7"
    }, {
        "slug": "Catalina",
        "ver": "10.14.6"
    }, {
        "slug": "Mojave",
        "ver": "10.13.6"
    }, {
        "slug": "High Sierra",
        "ver": "10.12.6"
    }, {
        "slug": "Sierra",
        "ver": "10.11.6"
}];

然后定义判断函数,

    function macos_slug_match(cur_vertion){
    var noDots = function(str,fmt){
        let reg = new RegExp(/(\d)(\.)(\d*)(\2*)(\d*)/g),
            res = str.toString().replace(reg,'$1$2$3$5');
        fmt ? res=Number(res) : res;
        return res
    };
    cur_vertion = noDots(cur_vertion,true);
    for(let i=0;i<macOSver.length;i++){
        let each = macOSver[i],
            last = macOSver[i-1] ? macOSver[i-1] : false;
        var each_ver = each.ver,
            each_vertion = noDots(each_ver,true),
            last_ver = last.ver||new_vertion,
            last_vertion = noDots(last_ver,true),
            each_slug = each.slug;
        if(cur_vertion>each_vertion && cur_vertion<=last_vertion){
            return each_slug
        }
    }
};
macos_slug_match(s.osVersion)  //调用函数(s.osVersion为Valine获取的客户端版本号)

注意将 macos_slug_match(s.osVersion) 添加到具体输出版本号html位置前需要做下判断是否为macos系统后再搜索class="vsys" 在其span内加上即可。

    //注意这里的win10版本号显示为win10是因为我之前修改过,valine默认的win10是自带小数点的,可以用parsefloat去掉或者翻下我之前记的笔记看下。
var macOSonly = s.os=='macOS' ? macos_slug_match(s.osVersion) : ""; //仅macos输出判断版本号(默认为 Mac OS)

//最后将 macOSonly 写入对应版本号信息中
l=ifTop+'<span class="vsys">'+s.browser+" / "+s.os+" "+s.osVersion+"<sup> "+macOSonly+" </sup></span>

其他事项

完成以上配置刷新评论即可看到macos用户的客户端版本号后面附带了一条版本号信息,如果需要识别更久远的系统版本,只需对应苹果官方提供的版本号新增macOSver对象数组即可自动判断。需要注意的是,

版本迭代顺序不能乱

函数是根据当前最新版本号和上一代版本最新版本号作为判断逻辑,所以更新时需要依次填写每一代的版本号

    const new_vertion = '12.01',
    macOSver = [{
        "slug": "Monterey",
        "ver": "11.6.1"
    }, {
        "slug": "Big Sur",
        "ver": "10.15.7"
    }, {
        "slug": "Catalina",
        "ver": "10.14.6"
    }, {
        "slug": "Mojave",
        "ver": "10.13.6"
    }, {
        "slug": "High Sierra",
        "ver": "10.12.6"
    }, {
        "slug": "Sierra",
        "ver": "10.11.6"
    }, {
        "slug": "OS X El Capitan",  //新增的
        "ver": "10.10.5"  //新增的(版本号为上一代 OS X Mavericks 的最新版本号)
}];

参考链接

Find out which macOS your Mac is using

js正则替换第二个小数点

以上,有问题评论区留言。


评论留言

既来之则留之,欢迎在下方留言评论。提交评论后还可以撤销或重新编辑,未发布的留言会被储存在本地以供下次继续编辑(Valine 会自动保存您的评论信息到浏览器)