From ab038a61612917a0554a9bfb78a76a0ae579d2d7 Mon Sep 17 00:00:00 2001 From: lihuanyu01 Date: Wed, 1 Dec 2021 20:45:59 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20=E6=94=AF=E6=8C=81=E8=B6=A3?= =?UTF-8?q?=E6=96=B0=E7=83=ADknew=20app=20=E7=9A=84=20UA=20=E5=88=A4?= =?UTF-8?q?=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/index.d.ts | 1 + src/index.js | 4 ++++ test/index.js | 14 ++++++++++++++ 3 files changed, 19 insertions(+) diff --git a/src/index.d.ts b/src/index.d.ts index 6f44d1f..3ce8a28 100644 --- a/src/index.d.ts +++ b/src/index.d.ts @@ -13,6 +13,7 @@ interface factory { androidVersion(): Array; isBaiduboxOrBdapp(): boolean; isTomas(): boolean; + isKnews(): boolean; isBdapp(): boolean; isBaiduBox(): boolean; isBaiduBoxLite(): boolean; diff --git a/src/index.js b/src/index.js index e3d4fe4..22720ec 100644 --- a/src/index.js +++ b/src/index.js @@ -91,6 +91,10 @@ define(function () { isTomas: function () { return /tomas/.test(ua); }, + // 是否为趣新热 + isKnews: function () { + return /knews/.test(ua); + }, // 是否为百度关怀版 isBaiduboxsenior: function () { return /baiduboxsenior/.test(ua); diff --git a/test/index.js b/test/index.js index e7df981..46b2498 100644 --- a/test/index.js +++ b/test/index.js @@ -31,6 +31,8 @@ define(['src/index'], function (UA) { var baiduboxvision = 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 SP-engine/2.24.0 bdapp/1.0 (baiduboxvision; baiduboxvision) baiduboxvision/1.4.0.10 (Baidu; P2 14.0) main/1.0 bdapp/1.0 (baiduboxvision; baiduboxvision) baiduboxvision/1.4.0.10 (Baidu; P2 14.0) NABar/1.0'; // 关怀版浏览器 var baiduboxsenior = 'Mozilla/5.0 (Linux; Android 8.1.0; ONEPLUS A5000 Build/OPM1.171019.011; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/63.0.3239.83 Mobile Safari/537.36 T7/10.13 bdapp/1.0 (baiduboxsenior; baiduboxsenior) baiduboxsenior/1.0.0.0 (Baidu; P1 8.1.0)'; + // 趣新热 APP 即小米白牌 + var knewsApp = 'Mozilla/5.0 (Linux; Android 10; TAS-AN00 Build/HUAWEITAS-AN00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/76.0.3809.89 Mobile Safari/537.36 T7/12.13.0 SP-engine/0.0.0 bdapp/1.0 (knews; knews) knews/2.0.0.1 (Baidu; P1 10) NABar/1.0' describe('UA', function () { it('should detect chrome', function () { expect(UA.isChromeDesktop()).to.equal(true); @@ -139,6 +141,15 @@ define(['src/index'], function (UA) { it('should detect tomas is baiduboxOrBdapp', function () { expect(UA.use(tomasApp).isBaiduboxOrBdapp()).to.equal(true); }); + it('should detect knews', function () { + expect(UA.use(knewsApp).isKnews()).to.equal(true); + }); + it('should detect knews is bdapp', function () { + expect(UA.use(knewsApp).isBdapp()).to.equal(true); + }); + it('should detect knews is baiduboxOrBdapp', function () { + expect(UA.use(knewsApp).isBaiduboxOrBdapp()).to.equal(true); + }); it('should detect baiduboxsenior', function () { expect(UA.use(baiduboxsenior).isBaiduboxsenior()).to.equal(true); @@ -147,6 +158,7 @@ define(['src/index'], function (UA) { expect(UA.use(baiduboxsenior).isBaiduboxOrBdapp()).to.equal(true); expect(UA.use(baiduboxsenior).isBaiduBox()).to.equal(false); expect(UA.use(tomasApp).isBaiduboxsenior()).to.equal(false); + expect(UA.use(knewsApp).isBaiduboxsenior()).to.equal(false); expect(UA.use(baiduboxvision).isBaiduboxsenior()).to.equal(false); expect(UA.use(baiduAndroidJisu).isBaiduboxsenior()).to.equal(false); expect(UA.use(baiduIOSJisu).isBaiduboxsenior()).to.equal(false); @@ -199,6 +211,7 @@ define(['src/index'], function (UA) { expect(UA.use(baiduAndroidJisu).baiduBoxOrBdappVersion()).to.deep.equal([3, 7, 5, 11]); expect(UA.use(testBdappUa).baiduBoxOrBdappVersion()).to.deep.equal(null); expect(UA.use(tomasApp).baiduBoxOrBdappVersion()).to.deep.equal([1, 0, 0, 1]); + expect(UA.use(knewsApp).baiduBoxOrBdappVersion()).to.deep.equal([2, 0, 0, 1]); expect(UA.use(baiduboxvision).baiduBoxOrBdappVersion()).to.deep.equal([1, 4, 0, 10]); expect(UA.use(qqApp).baiduBoxOrBdappVersion()).to.deep.equal(null); expect(UA.use(weixinApp).baiduBoxOrBdappVersion()).to.deep.equal(null); @@ -208,6 +221,7 @@ define(['src/index'], function (UA) { expect(UA.use(testBdappUa).bdappVersion()).to.deep.equal(null); expect(UA.use(btestBaiduboxappUa).bdappVersion()).to.deep.equal(null); expect(UA.use(tomasApp).bdappVersion()).to.deep.equal([1, 0, 0, 1]); + expect(UA.use(knewsApp).bdappVersion()).to.deep.equal([2, 0, 0, 1]); expect(UA.use(baiduboxvision).bdappVersion()).to.deep.equal([1, 4, 0, 10]); expect(UA.use(qqApp).bdappVersion()).to.deep.equal(null); expect(UA.use(weixinApp).bdappVersion()).to.deep.equal(null); From 2120c5c95157aed86e61af0fb4c9a45d318f33cf Mon Sep 17 00:00:00 2001 From: lihuanyu01 Date: Wed, 1 Dec 2021 20:45:59 +0800 Subject: [PATCH 2/2] =?UTF-8?q?feat:=20=E6=94=AF=E6=8C=81=E8=B6=A3?= =?UTF-8?q?=E6=96=B0=E7=83=ADknew=20app=20=E7=9A=84=20UA=20=E5=88=A4?= =?UTF-8?q?=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/index.js | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/index.js b/src/index.js index 22720ec..fe5a79b 100644 --- a/src/index.js +++ b/src/index.js @@ -52,6 +52,13 @@ define(function () { var version = result ? result[1].split('.') : null; return version ? version.map(parseFloat) : null; }, + weakBdappVersion: function () { + if (!this.isBdapp()) return null; + var reg = /bdapp\/[\d+.]+\s\(\w+;\s\w+\)\s\w+\/([\d+.]+)/i; + var result = ua.match(reg); + var version = result ? result[1].split('.') : null; + return version ? version.map(parseFloat) : null; + }, // 简单搜索版本号 secrVersion: function () { // 非简单浏览器版本返回 0 @@ -85,13 +92,17 @@ define(function () { }, // 按照新UA规范,是否为百度矩阵产品 isBdapp: function () { - return /bdapp/.test(ua); + return /bdapp/.test(ua) && !this.isWeak(); + }, + // 按照新UA规范,非矩阵产品增加 weak 标记 + isWeak: function() { + return /weak/.test(ua); }, // 是否为百度大字版 isTomas: function () { return /tomas/.test(ua); }, - // 是否为趣新热 + // 是否为趣新热,关联厂商小米白牌,属于半个手百矩阵产品 isKnews: function () { return /knews/.test(ua); },