Skip to content

Commit 65df4ad

Browse files
lihuanyu01harttle
authored andcommitted
feat: 增加百度主线(baidubox)或矩阵产品(bdapp)的版本判断
1 parent 0176c4f commit 65df4ad

File tree

3 files changed

+43
-0
lines changed

3 files changed

+43
-0
lines changed

src/index.d.ts

+3
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,13 @@ interface factory {
66
iOSVersion(): [number, number] | [];
77
appleWebkitVersion(): Array<number>;
88
baiduBoxVersion(): Array<number>;
9+
baiduBoxOrBdappVersion(): Array<number> | null;
10+
bdappVersion(): Array<number>| null;
911
secrVersion(): Array<number>;
1012
getChromeVersion(): Array<number>;
1113
androidVersion(): Array<number>;
1214
isBaiduboxOrBdapp(): boolean;
15+
isTomas(): boolean;
1316
isBdapp(): boolean;
1417
isBaiduBox(): boolean;
1518
isBaiduBoxLite(): boolean;

src/index.js

+16
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,22 @@ define(function () {
3636
}
3737
return version ? version.map(parseFloat) : [];
3838
},
39+
// 百度主线或矩阵产品版本号
40+
baiduBoxOrBdappVersion: function () {
41+
if (this.isBaiduBox()) {
42+
return this.baiduBoxVersion() && this.baiduBoxVersion().length > 0 ? this.baiduBoxVersion() : null;
43+
}
44+
if (this.isBdapp()) return this.bdappVersion();
45+
return null;
46+
},
47+
// 矩阵产品版本号
48+
bdappVersion: function () {
49+
if (!this.isBdapp()) return null;
50+
var reg = /bdapp\/[\d+.]+\s\(\w+;\s\w+\)\s\w+\/([\d+.]+)/i;
51+
var result = ua.match(reg);
52+
var version = result ? result[1].split('.') : null;
53+
return version ? version.map(parseFloat) : null;
54+
},
3955
// 简单搜索版本号
4056
secrVersion: function () {
4157
// 非简单浏览器版本返回 0

test/index.js

+24
Original file line numberDiff line numberDiff line change
@@ -168,4 +168,28 @@ define(['src/index'], function (UA) {
168168
expect(UA.use(qqIOS).androidVersion()).to.deep.equal([]);
169169
});
170170
});
171+
describe('baiduBoxOrbdappVersion', function () {
172+
var testBdappUa = 'Mobile/15E148 SP-engine/2.24.0 bdapp/1.0 (test) test (Baidu; P2 14.0) main/1.0 bdapp/1.0 (Baidu; P2 14.0) NABar/1.0';
173+
var btestBaiduboxappUa = '(KHTML, like Gecko) Mobile/13F69 baiduboxapp /1000306f/C4FF069AC425606E29ACA3E490065B7C5DFD70645OCEANNARPH/1';
174+
it('should detect baiduBoxOrBdapp version', function () {
175+
expect(UA.use(btestBaiduboxappUa).baiduBoxOrBdappVersion()).to.deep.equal(null);
176+
expect(UA.use(baiduIOS).baiduBoxOrBdappVersion()).to.deep.equal([9, 0, 0, 8]);
177+
expect(UA.use(baiduAndroid).baiduBoxOrBdappVersion()).to.deep.equal([6, 3]);
178+
expect(UA.use(baiduIOSJisu).baiduBoxOrBdappVersion()).to.deep.equal([3, 7, 6, 12]);
179+
expect(UA.use(baiduAndroidJisu).baiduBoxOrBdappVersion()).to.deep.equal([3, 7, 5, 11]);
180+
expect(UA.use(testBdappUa).baiduBoxOrBdappVersion()).to.deep.equal(null);
181+
expect(UA.use(tomasApp).baiduBoxOrBdappVersion()).to.deep.equal([1, 0, 0, 1]);
182+
expect(UA.use(baiduboxvision).baiduBoxOrBdappVersion()).to.deep.equal([1, 4, 0, 10]);
183+
expect(UA.use(qqApp).baiduBoxOrBdappVersion()).to.deep.equal(null);
184+
expect(UA.use(weixinApp).baiduBoxOrBdappVersion()).to.deep.equal(null);
185+
});
186+
it('should detect bdapp version', function () {
187+
expect(UA.use(testBdappUa).bdappVersion()).to.deep.equal(null);
188+
expect(UA.use(btestBaiduboxappUa).bdappVersion()).to.deep.equal(null);
189+
expect(UA.use(tomasApp).bdappVersion()).to.deep.equal([1, 0, 0, 1]);
190+
expect(UA.use(baiduboxvision).bdappVersion()).to.deep.equal([1, 4, 0, 10]);
191+
expect(UA.use(qqApp).bdappVersion()).to.deep.equal(null);
192+
expect(UA.use(weixinApp).bdappVersion()).to.deep.equal(null);
193+
});
194+
});
171195
});

0 commit comments

Comments
 (0)