Skip to content

Commit 301878c

Browse files
author
shengyonggen
committed
Release 1.18.7
1 parent 315823d commit 301878c

File tree

9 files changed

+399
-66
lines changed

9 files changed

+399
-66
lines changed

core/sensorsdata.amd.min.js

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

core/sensorsdata.es6.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

core/sensorsdata.min.js

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

product/sensorsdata.amd.full.js

Lines changed: 129 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2223,6 +2223,59 @@
22232223
return '';
22242224
};
22252225

2226+
_.isBaiduTraffic = function() {
2227+
var referer = document.referrer;
2228+
var endsWith = 'baidu.com';
2229+
if (!referer) {
2230+
return false;
2231+
}
2232+
2233+
try {
2234+
var hostname = _.URL(referer).hostname;
2235+
return hostname && hostname.substring(hostname.length - endsWith.length) === endsWith;
2236+
} catch (e) {
2237+
return false;
2238+
}
2239+
return false;
2240+
};
2241+
2242+
_.getReferrerEqid = function() {
2243+
var query = _.getQueryParamsFromUrl(document.referrer);
2244+
if (_.isEmptyObject(query) || !query.eqid) {
2245+
return _.UUID().replace(/-/g, '');
2246+
}
2247+
return query.eqid;
2248+
};
2249+
2250+
_.getReferrerEqidType = function() {
2251+
var query = _.getQueryParamsFromUrl(document.referrer);
2252+
if (_.isEmptyObject(query) || !query.eqid) {
2253+
return 'baidu_sem_keyword_id';
2254+
}
2255+
return 'baidu_seo_keyword_id';
2256+
};
2257+
2258+
_.getBaiduKeyword = {
2259+
data: {},
2260+
id: function() {
2261+
if (this.data.id) {
2262+
return this.data.id;
2263+
} else {
2264+
this.data.id = _.getReferrerEqid();
2265+
return this.data.id;
2266+
}
2267+
},
2268+
type: function() {
2269+
if (this.data.type) {
2270+
return this.data.type;
2271+
} else {
2272+
this.data.type = _.getReferrerEqidType();
2273+
return this.data.type;
2274+
}
2275+
}
2276+
};
2277+
2278+
22262279
_.isReferralTraffic = function(refererstring) {
22272280
refererstring = refererstring || document.referrer;
22282281
if (refererstring === '') {
@@ -2415,15 +2468,19 @@
24152468
return typeof referrer === 'string' ? referrer : '';
24162469
};
24172470

2418-
_.getKeywordFromReferrer = function(referrerUrl) {
2471+
_.getKeywordFromReferrer = function(referrerUrl, activeValue) {
24192472
referrerUrl = referrerUrl || document.referrer;
24202473
var search_keyword = sd.para.source_type.keyword;
24212474
if (document && typeof referrerUrl === 'string') {
24222475
if (referrerUrl.indexOf('http') === 0) {
24232476
var searchEngine = _.getReferSearchEngine(referrerUrl);
24242477
var query = _.getQueryParamsFromUrl(referrerUrl);
24252478
if (_.isEmptyObject(query)) {
2426-
return '未取到值';
2479+
if (sd.para.preset_properties.search_keyword_baidu && _.isBaiduTraffic()) {
2480+
return;
2481+
} else {
2482+
return '未取到值';
2483+
}
24272484
}
24282485
var temp = null;
24292486
for (var i in search_keyword) {
@@ -2434,16 +2491,32 @@
24342491
for (var i = 0; i < temp.length; i++) {
24352492
var _value = query[temp[i]];
24362493
if (_value) {
2437-
return _value;
2494+
if (activeValue) {
2495+
return {
2496+
active: _value
2497+
};
2498+
} else {
2499+
return _value;
2500+
}
24382501
}
24392502
}
24402503
} else if (query[temp]) {
2441-
return query[temp];
2504+
if (activeValue) {
2505+
return {
2506+
active: query[temp]
2507+
};
2508+
} else {
2509+
return query[temp];
2510+
}
24422511
}
24432512
}
24442513
}
24452514
}
2446-
return '未取到值';
2515+
if (sd.para.preset_properties.search_keyword_baidu && _.isBaiduTraffic()) {
2516+
return;
2517+
} else {
2518+
return '未取到值'
2519+
}
24472520
} else {
24482521
if (referrerUrl === '') {
24492522
return '未取到值_直接打开';
@@ -2456,6 +2529,7 @@
24562529
}
24572530
};
24582531

2532+
24592533
_.getWxAdIdFromUrl = function(url) {
24602534
var click_id = _.getQueryParam(url, 'gdt_vid');
24612535
var hash_key = _.getQueryParam(url, 'hash_key');
@@ -3105,6 +3179,7 @@
31053179

31063180
sd.para_default = {
31073181
preset_properties: {
3182+
search_keyword_baidu: false,
31083183
latest_utm: true,
31093184
latest_traffic_source_type: true,
31103185
latest_search_keyword: true,
@@ -3613,6 +3688,14 @@
36133688
}
36143689

36153690
if (sd.is_first_visitor && !para.not_set_profile) {
3691+
var eqidObj = {};
3692+
3693+
if (sd.para.preset_properties.search_keyword_baidu && _.isReferralTraffic(document.referrer) && _.isBaiduTraffic()) {
3694+
eqidObj['$search_keyword_id'] = _.getBaiduKeyword.id();
3695+
eqidObj['$search_keyword_id_type'] = _.getBaiduKeyword.type();
3696+
eqidObj['$search_keyword_id_hash'] = _.hashCode(eqidObj['$search_keyword_id']);
3697+
}
3698+
36163699
sd.setOnceProfile(
36173700
_.extend({
36183701
$first_visit_time: new Date(),
@@ -3622,7 +3705,7 @@
36223705
$first_traffic_source_type: _.getSourceFromReferrer(),
36233706
$first_search_keyword: _.getKeywordFromReferrer()
36243707
},
3625-
getUtm()
3708+
getUtm(), eqidObj
36263709
)
36273710
);
36283711
sd.is_first_visitor = false;
@@ -3669,6 +3752,14 @@
36693752
}
36703753
});
36713754
if (sd.is_first_visitor && !para.not_set_profile) {
3755+
var eqidObj = {};
3756+
3757+
if (sd.para.preset_properties.search_keyword_baidu && _.isReferralTraffic(document.referrer) && _.isBaiduTraffic()) {
3758+
eqidObj['$search_keyword_id'] = _.getBaiduKeyword.id();
3759+
eqidObj['$search_keyword_id_type'] = _.getBaiduKeyword.type();
3760+
eqidObj['$search_keyword_id_hash'] = _.hashCode(eqidObj['$search_keyword_id']);
3761+
}
3762+
36723763
sd.setOnceProfile(
36733764
_.extend({
36743765
$first_visit_time: new Date(),
@@ -3678,11 +3769,12 @@
36783769
$first_traffic_source_type: _.getSourceFromReferrer(),
36793770
$first_search_keyword: _.getKeywordFromReferrer()
36803771
},
3681-
$utms
3772+
$utms, eqidObj
36823773
)
36833774
);
36843775
sd.is_first_visitor = false;
36853776
}
3777+
36863778
if (para.not_set_profile) {
36873779
delete para.not_set_profile;
36883780
}
@@ -5034,7 +5126,9 @@
50345126
data.properties.$latest_referrer = '取值异常';
50355127
}
50365128
if (sd.para.preset_properties.latest_search_keyword && !_.isString(data.properties.$latest_search_keyword)) {
5037-
data.properties.$latest_search_keyword = '取值异常';
5129+
if (!sd.para.preset_properties.search_keyword_baidu || !_.isString(data.properties.$search_keyword_id) || !_.isNumber(data.properties.$search_keyword_id_hash) || !_.isString(data.properties.$search_keyword_id_type)) {
5130+
data.properties.$latest_search_keyword = '取值异常';
5131+
}
50385132
}
50395133
if (sd.para.preset_properties.latest_traffic_source_type && !_.isString(data.properties.$latest_traffic_source_type)) {
50405134
data.properties.$latest_traffic_source_type = '取值异常';
@@ -5382,22 +5476,35 @@
53825476
checkIsFirstLatest: function() {
53835477
var url_domain = _.info.pageProp.url_domain;
53845478

5385-
var latest_utms = ['$utm_source', '$utm_medium', '$utm_campaign', '$utm_content', '$utm_term'];
5386-
var props = store.getProps();
5387-
for (var i = 0; i < latest_utms.length; i++) {
5388-
if (latest_utms[i] in props) {
5389-
delete props[latest_utms[i]];
5390-
}
5391-
}
5392-
store.setProps(props, true);
5393-
53945479

53955480
var latestObj = {};
53965481

53975482
if (url_domain === '') {
53985483
url_domain = 'url解析失败';
53995484
}
54005485

5486+
var baiduKey = _.getKeywordFromReferrer(document.referrer, true);
5487+
if (sd.para.preset_properties.search_keyword_baidu) {
5488+
if (_.isReferralTraffic(document.referrer)) {
5489+
if (_.isBaiduTraffic() && !(_.isObject(baiduKey) && baiduKey.active)) {
5490+
latestObj['$search_keyword_id'] = _.getBaiduKeyword.id();
5491+
latestObj['$search_keyword_id_type'] = _.getBaiduKeyword.type();
5492+
latestObj['$search_keyword_id_hash'] = _.hashCode(latestObj['$search_keyword_id']);
5493+
} else {
5494+
sd.store._state.props.$search_keyword_id && delete sd.store._state.props.$search_keyword_id;
5495+
sd.store._state.props.$search_keyword_id_type && delete sd.store._state.props.$search_keyword_id_type;
5496+
sd.store._state.props.$search_keyword_id_hash && delete sd.store._state.props.$search_keyword_id_hash;
5497+
}
5498+
}
5499+
} else {
5500+
sd.store._state.props.$search_keyword_id && delete sd.store._state.props.$search_keyword_id;
5501+
sd.store._state.props.$search_keyword_id_type && delete sd.store._state.props.$search_keyword_id_type;
5502+
sd.store._state.props.$search_keyword_id_hash && delete sd.store._state.props.$search_keyword_id_hash;
5503+
}
5504+
5505+
sd.store.save();
5506+
5507+
54015508
_.each(sd.para.preset_properties, function(value, key) {
54025509
if (key.indexOf('latest_') === -1) {
54035510
return false;
@@ -5424,7 +5531,11 @@
54245531
latestObj['$latest_referrer'] = _.isDecodeURI(sd.para.url_is_decode, _.info.pageProp.referrer);
54255532
break;
54265533
case 'search_keyword':
5427-
latestObj['$latest_search_keyword'] = _.getKeywordFromReferrer();
5534+
if (_.getKeywordFromReferrer()) {
5535+
latestObj['$latest_search_keyword'] = _.getKeywordFromReferrer();
5536+
} else if (_.isObject(sd.store._state.props) && sd.store._state.props.$latest_search_keyword) {
5537+
delete sd.store._state.props.$latest_search_keyword;
5538+
}
54285539
break;
54295540
case 'landing_page':
54305541
latestObj['$latest_landing_page'] = _.isDecodeURI(sd.para.url_is_decode, location.href);

0 commit comments

Comments
 (0)