@@ -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 ( / ( u t m _ s o u r c e | u t m _ m e d i u m | u t m _ c a m p a i g n | u t m _ c o n t e n t | u t m _ t e r m ) \= [ ^ & ] + / ) ;
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