Skip to content

Commit 60226f1

Browse files
author
shengyonggen
committed
渠道问题和支持webpack
1 parent e5b4f17 commit 60226f1

File tree

8 files changed

+256
-76
lines changed

8 files changed

+256
-76
lines changed

sensorsdata.min.js

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

src/sdk.js

Lines changed: 87 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1308,16 +1308,69 @@ _.querySelectorAll = function(val){
13081308
};
13091309

13101310
_.getReferrer = function(referrer){
1311+
var referrer = referrer || document.referrer;
1312+
if(typeof referrer !== 'string'){
1313+
return '取值异常';
1314+
}
1315+
if (referrer.indexOf("https://www.baidu.com/") === 0) {
1316+
referrer = referrer.split('?')[0];
1317+
}
1318+
referrer = referrer.slice(0, sd.para.max_referrer_string_length);
1319+
return (typeof referrer === 'string' ? referrer : '' );
1320+
};
13111321

1312-
var referrer = referrer || document.referrer;
1313-
1314-
if(referrer.indexOf("https://www.baidu.com/") === 0){
1315-
referrer = referrer.split('?')[0];
1322+
_.getKeywordFromReferrer = function(){
1323+
var search_keyword = {baidu:'wd',google:'q',bing:'q',yahoo:'p',sogou:'query',so:'q'}
1324+
if(document && typeof document.referrer === 'string'){
1325+
if(document.referrer.indexOf('http') === 0) {
1326+
var domain = _.url('domain',document.referrer);
1327+
var query = _.url('?',document.referrer);
1328+
for(var i in search_keyword){
1329+
if(domain.indexOf(i) === 0){
1330+
if(typeof query === 'object' && query[search_keyword[i]]){
1331+
return query[search_keyword[i]];
1332+
}
1333+
}
13161334
}
1317-
referrer = referrer.slice(0, sd.para.max_referrer_string_length);
1335+
}else{
1336+
return '未取到值';
1337+
}
1338+
}else{
1339+
return '取值异常';
1340+
}
1341+
};
13181342

1319-
return (typeof referrer === 'string' ? referrer : '' );
1320-
}
1343+
_.getSourceFromReferrer = function(){
1344+
function getMatchStrFromArr(arr,str){
1345+
for(var i = 0; i<arr.length; i++){
1346+
if(str.split('?')[0].indexOf(arr[i]) !== -1){
1347+
return true;
1348+
}
1349+
}
1350+
}
1351+
1352+
var search_engine = ['www.baidu.','so.com','sogou.com','youdao.com','google.','yahoo.com/','bing.com/','ask.com/'];
1353+
var social_engine = ['weibo.com','renren.com','kaixin001.com','douban.com','qzone.qq.com','zhihu.com','tieba.baidu.com','weixin.qq.com'];
1354+
1355+
var referrer = document.referrer || '';
1356+
var url = _.info.pageProp.url;
1357+
if(url){
1358+
var utm_match = url.match(/(utm_source|utm_medium|utm_campaign|utm_content|utm_term)\=[^&]+/);
1359+
if(utm_match && utm_match[0]){
1360+
return '付费广告流量';
1361+
}else if(getMatchStrFromArr(search_engine,referrer)){
1362+
return '自然搜索流量';
1363+
}else if(getMatchStrFromArr(social_engine,referrer)){
1364+
return '社交网站流量';
1365+
}else if(referrer === ''){
1366+
return '直接流量';
1367+
}else{
1368+
return '引荐流量';
1369+
}
1370+
}else{
1371+
return '获取url异常';
1372+
}
1373+
};
13211374

13221375
_.info = {
13231376
initPage: function() {
@@ -1560,11 +1613,23 @@ var saNewUser = {
15601613
checkIsFirstLatest: function() {
15611614
var url_domain = _.info.pageProp.url_domain;
15621615
var referrer_domain = _.info.pageProp.referrer_domain;
1563-
// 如果域名不一致,就register为latest
1564-
if (url_domain !== '' && url_domain !== referrer_domain) {
1616+
// 判断最近一次,如果前向地址跟自己域名一致,且cookie中取不到值,认为有异常
1617+
// 最近一次站外前向地址,如果域名不一致,就register为latest
1618+
if(url_domain === referrer_domain){
1619+
if(!_.store.getProps() || !_.store.getProps().$latest_referrer){
1620+
sd.register({
1621+
$latest_referrer: '取值异常',
1622+
$latest_referrer_host: '取值异常'
1623+
//$latest_traffic_source_type: '取值异常',
1624+
//$latest_search_keyword: '取值异常'
1625+
});
1626+
}
1627+
} else {
15651628
sd.register({
1629+
//$latest_traffic_source_type:_.getSourceFromReferrer(),
15661630
$latest_referrer: _.info.pageProp.referrer,
15671631
$latest_referrer_host: _.info.pageProp.referrer_host
1632+
//$latest_search_keyword: _.getKeywordFromReferrer()
15681633
});
15691634
}
15701635
// utm
@@ -2064,8 +2129,11 @@ saEvent.send = function(p, callback) {
20642129
// 暂时隐藏,等extractor都部署上去 $first_landing_page: _.info.pageProp.url.slice(0, sd.para.max_referrer_string_length),
20652130
$first_visit_time: new Date(),
20662131
$first_referrer: _.getReferrer(),
2067-
$first_browser_language: navigator.language,
2068-
$first_referrer_host: _.info.pageProp.referrer_host
2132+
$first_browser_language: navigator.language || '取值异常',
2133+
//$first_browser_charset: document.charset || '取值异常',
2134+
$first_referrer_host: _.info.pageProp.referrer_host,
2135+
$first_traffic_source_type: _.getSourceFromReferrer(),
2136+
$first_search_keyword: _.getKeywordFromReferrer()
20692137
}, $utms)
20702138
);
20712139
}
@@ -3238,16 +3306,15 @@ var heatmap = {
32383306
}
32393307
};
32403308

3241-
3242-
3243-
//可视化埋点的后初始化
3244-
sd.init = function(){
3245-
if(_.isObject(sd.sdkMain)){
3246-
sd.sdkMain._init();
3247-
}
3309+
sd.init = function(para){
3310+
if((!para && has_declare) || (para && !has_declare)){
3311+
console.log('test', typeof para)
3312+
sd.initPara(para);
3313+
sd._init();
3314+
}
32483315
};
32493316

3250-
sd._init = function() {
3317+
sd._init = function() {
32513318
// 防止爬虫等异常情况
32523319
/*
32533320
if(!_.hasStandardBrowserEnviroment()){
@@ -3270,4 +3337,5 @@ var heatmap = {
32703337

32713338
};
32723339

3340+
32733341

0 commit comments

Comments
 (0)