Skip to content

Commit 89daf75

Browse files
author
shengyonggen
committed
增加单页应用的autoTrack
1 parent 7da9d04 commit 89daf75

File tree

5 files changed

+65
-15
lines changed

5 files changed

+65
-15
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: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -691,6 +691,11 @@ _.addEvent = function() {
691691
register_event.apply(null,arguments);
692692
};
693693

694+
_.addHashEvent = function(callback){
695+
var hashEvent = ('pushState' in window.history ? 'popstate' : 'hashchange');
696+
_.addEvent(window,hashEvent,callback);
697+
};
698+
694699
_.cookie = {
695700
get: function(name) {
696701
var nameEQ = name + '=';
@@ -1067,9 +1072,9 @@ _.dom = {
10671072

10681073
};
10691074

1070-
_.getReferrer = function(){
1075+
_.getReferrer = function(referrer){
10711076

1072-
var referrer = document.referrer;
1077+
var referrer = referrer || document.referrer;
10731078

10741079
if(referrer.indexOf("https://www.baidu.com/") === 0){
10751080
referrer = referrer.split('?')[0];
@@ -1720,7 +1725,24 @@ saEvent.send = function(p, callback) {
17201725
delete para.not_set_profile;
17211726
}
17221727

1723-
// trackpageview
1728+
// 解决单页面的referrer问题
1729+
var current_page_url = location.href;
1730+
1731+
if(sd.para.is_single_page){
1732+
_.addHashEvent(function(){
1733+
var referrer = _.getReferrer(current_page_url);
1734+
sd.track('$pageview', _.extend({
1735+
$referrer: referrer,
1736+
$referrer_host: _.url('hostname',referrer) || '',
1737+
$url: location.href,
1738+
$url_path: location.pathname,
1739+
$title: document.title
1740+
}, $utms,para),callback
1741+
);
1742+
current_page_url = location.href;
1743+
});
1744+
}
1745+
17241746
sd.track('$pageview', _.extend({
17251747
$referrer: _.getReferrer(),
17261748
$referrer_host: _.info.pageProp.referrer_host,
@@ -1729,6 +1751,7 @@ saEvent.send = function(p, callback) {
17291751
$title: document.title
17301752
}, $utms,para),callback
17311753
);
1754+
17321755
}
17331756

17341757

src/sensorsdata.full.js

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,9 @@ if(typeof JSON!=='object'){JSON={}}(function(){'use strict';var rx_one=/^[\],:{}
4848
// 七鱼过滤id
4949
vtrack_ignore: {},
5050

51-
auto_init: true
51+
auto_init: true,
52+
53+
is_single_page: false
5254

5355
};
5456
// 合并配置
@@ -1305,6 +1307,11 @@ _.addEvent = function() {
13051307
register_event.apply(null,arguments);
13061308
};
13071309

1310+
_.addHashEvent = function(callback){
1311+
var hashEvent = ('pushState' in window.history ? 'popstate' : 'hashchange');
1312+
_.addEvent(window,hashEvent,callback);
1313+
};
1314+
13081315
_.cookie = {
13091316
get: function(name) {
13101317
var nameEQ = name + '=';
@@ -1681,9 +1688,9 @@ _.dom = {
16811688

16821689
};
16831690

1684-
_.getReferrer = function(){
1691+
_.getReferrer = function(referrer){
16851692

1686-
var referrer = document.referrer;
1693+
var referrer = referrer || document.referrer;
16871694

16881695
if(referrer.indexOf("https://www.baidu.com/") === 0){
16891696
referrer = referrer.split('?')[0];
@@ -2328,7 +2335,24 @@ saEvent.send = function(p, callback) {
23282335
delete para.not_set_profile;
23292336
}
23302337

2331-
// trackpageview
2338+
// 解决单页面的referrer问题
2339+
var current_page_url = location.href;
2340+
2341+
if(sd.para.is_single_page){
2342+
_.addHashEvent(function(){
2343+
var referrer = _.getReferrer(current_page_url);
2344+
sd.track('$pageview', _.extend({
2345+
$referrer: referrer,
2346+
$referrer_host: _.url('hostname',referrer) || '',
2347+
$url: location.href,
2348+
$url_path: location.pathname,
2349+
$title: document.title
2350+
}, $utms,para),callback
2351+
);
2352+
current_page_url = location.href;
2353+
});
2354+
}
2355+
23322356
sd.track('$pageview', _.extend({
23332357
$referrer: _.getReferrer(),
23342358
$referrer_host: _.info.pageProp.referrer_host,
@@ -2337,6 +2361,7 @@ saEvent.send = function(p, callback) {
23372361
$title: document.title
23382362
}, $utms,para),callback
23392363
);
2364+
23402365
}
23412366

23422367

src/sensorsdata.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,9 @@ try{
5353
// 七鱼过滤id
5454
vtrack_ignore: {},
5555

56-
auto_init: true
56+
auto_init: true,
57+
58+
is_single_page: false
5759

5860
};
5961
// 合并配置

vtrack.min.js

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

0 commit comments

Comments
 (0)