Skip to content

Commit 2502b2c

Browse files
author
shengyonggen
committed
增加setprofile存储在localstorage和getPresetProperties的方法
1 parent 63948f4 commit 2502b2c

File tree

10 files changed

+186
-28
lines changed

10 files changed

+186
-28
lines changed

README.md

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,15 @@ Sensors Analytics JavaScript SDK
44

55
完整文档请[点击这里](http://www.sensorsdata.cn/manual/js_sdk.html),如有疑问请联系邮箱 [email protected]
66

7-
目录说明
7+
需要使用的文件说明
88

9-
1. /src 是源码目录
10-
2. / 根目录下的是最新的打包压缩后的文件,正式项目请使用下面的发行版文件
11-
12-
## 获取发行版
9+
* sensorsdata.min.js:打包压缩后的,数据采集文件, sdk_url 使用这个文件的位置
10+
* heatmap.min.js:打包压缩后的,点击图渲染时候需要用的文件( 1.9 以上版本新加 ), heatmap_url 指定这个文件的位置
1311

1412
> 注意 SDK 可能不完全向前兼容,请阅读具体的 Release Log。如果不确定是否支持,请联系神策技术支持人员!例如使用 1.9 版本 SDK ,神策分析系统必须也升级到 1.9 以上!
1513
1614
请根据需要 [Releases](https://github.com/sensorsdata/sa-sdk-javascript/releases) 里下载对应的文件:
1715

18-
* sensorsdata.min.js:数据采集文件。
19-
* heatmap.min.js:点击图渲染时候需要用的文件。
2016

2117

2218

heatmap.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.

sensorsdata.amd.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.

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/heatmap.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8884,7 +8884,7 @@ var heatmap_render = {
88848884

88858885
},
88868886
setCssStyle: function(){
8887-
var css = '#sa-sdk-heatmap-toolbar-selectmap ul{position:absolute;top:40px;left:0;background:#fff;box-shadow:1px 1px 1px rgba(200,200,200,.6);border-radius:3px;}#sa-sdk-heatmap-toolbar-selectmap ul li{cursor:pointer;height:32px;color:#475669;line-height:32px;padding-left:8px}#sa-sdk-heatmap-toolbar-selectmap ul li:hover{background:#00cd90;color:#fff;}#sa-sdk-heatmap-toolbar-selectmap ul li a{text-decoration:none}.sa-heat-box-head-2017322{border-bottom:1px solid rgba(0, 0, 0, .06);cursor:move;height:30px;background:#e1e1e1;color:#999;clear:both}.sa-heat-box-effect-2017314{animation-duration:.5s;animation-fill-mode:both;animation-iteration-count:1;animation-name:sa-heat-box-effect-2017314}@keyframes "sa-heat-box-effect-2017314"{0%{opacity:.6;}to{opacity:1;}}.sa-click-area{position:relative}.sa-click-area:before{cursor:pointer;content:"";width:100%;position:absolute;left:0;top:0;bottom:0}.sa-click-area.sa-click-area0:before{background:hsla(60, 98%, 80%, .75);box-shadow:0 0 0 2px #fefe9b inset}img.sa-click-area.sa-click-area0{border:2px solid #fefe9b}.sa-click-area.sa-click-area0:hover:before,input.sa-click-area.sa-click-area0,textarea.sa-click-area.sa-click-area0{background:hsla(60, 98%, 80%, .85)}.sa-click-area.sa-click-area1:before{background:rgba(255, 236, 142, .75);box-shadow:0 0 0 2px #ffec8e inset}img.sa-click-area.sa-click-area1{border:2px solid #ffec8e}.sa-click-area.sa-click-area1:hover:before,input.sa-click-area.sa-click-area1,textarea.sa-click-area.sa-click-area1{background:rgba(255, 236, 142, .85)}.sa-click-area.sa-click-area2:before{background:rgba(255, 188, 113, .75);box-shadow:0 0 0 2px #ffbc71 inset}img.sa-click-area.sa-click-area2{border:2px solid #ffbc71}.sa-click-area.sa-click-area2:hover:before,input.sa-click-area.sa-click-area2,textarea.sa-click-area.sa-click-area2{background:rgba(255, 188, 113, .85)}.sa-click-area.sa-click-area3:before{background:rgba(255, 120, 82, .75);box-shadow:0 0 0 2px #ff7852 inset}img.sa-click-area.sa-click-area3{border:2px solid #ff7852}.sa-click-area.sa-click-area3:hover:before,input.sa-click-area.sa-click-area3,textarea.sa-click-area.sa-click-area3{background:rgba(255, 120, 82, .85)}.sa-click-area.sa-click-area4:before{background:rgba(255, 65, 90, .75);box-shadow:0 0 0 2px #ff415a inset}img.sa-click-area.sa-click-area4{border:2px solid #ff415a}.sa-click-area.sa-click-area4:hover:before,input.sa-click-area.sa-click-area4,textarea.sa-click-area.sa-click-area4{background:rgba(255, 65, 90, .85)}.sa-click-area.sa-click-area5:before{background:rgba(199, 0, 18, .75);box-shadow:0 0 0 2px #c70012 inset}img.sa-click-area.sa-click-area5{border:2px solid #c70012}.sa-click-area.sa-click-area5:hover:before,input.sa-click-area.sa-click-area5,textarea.sa-click-area.sa-click-area5{background:rgba(199, 0, 18, .85)}.sa-click-area.sa-click-area6:before{background:rgba(127, 0, 79, .75);box-shadow:0 0 0 3px #7f004f inset}img.sa-click-area.sa-click-area6{border:2px solid #7f004f}.sa-click-area.sa-click-area6:hover:before,input.sa-click-area.sa-click-area6,textarea.sa-click-area.sa-click-area6{background:rgba(127, 0, 79, .85)}.sa-click-area .sa-click-area:before{background:0 0 !important}.sa-click-area:after{height:14px;line-height:14px;margin:-7px 0 0 -28px;width:56px;color:#fff;content:attr(data-click);font-size:14px;font-weight:700;left:50%;line-height:1em;position:absolute;text-align:center;text-indent:0;text-shadow:1px 1px 2px #000;top:50%;z-index:10}';
8887+
var css = '.sa-click-area video{visibility:hidden;}#sa-sdk-heatmap-toolbar-selectmap ul{position:absolute;top:40px;left:0;background:#fff;box-shadow:1px 1px 1px rgba(200,200,200,.6);border-radius:3px;}#sa-sdk-heatmap-toolbar-selectmap ul li{cursor:pointer;height:32px;color:#475669;line-height:32px;padding-left:8px}#sa-sdk-heatmap-toolbar-selectmap ul li:hover{background:#00cd90;color:#fff;}#sa-sdk-heatmap-toolbar-selectmap ul li a{text-decoration:none}.sa-heat-box-head-2017322{border-bottom:1px solid rgba(0, 0, 0, .06);cursor:move;height:30px;background:#e1e1e1;color:#999;clear:both}.sa-heat-box-effect-2017314{animation-duration:.5s;animation-fill-mode:both;animation-iteration-count:1;animation-name:sa-heat-box-effect-2017314}@keyframes "sa-heat-box-effect-2017314"{0%{opacity:.6;}to{opacity:1;}}.sa-click-area{position:relative}.sa-click-area:before{cursor:pointer;content:"";width:100%;position:absolute;left:0;top:0;bottom:0}.sa-click-area.sa-click-area0:before{background:hsla(60, 98%, 80%, .75);box-shadow:0 0 0 2px #fefe9b inset}img.sa-click-area.sa-click-area0{border:2px solid #fefe9b}.sa-click-area.sa-click-area0:hover:before,input.sa-click-area.sa-click-area0,textarea.sa-click-area.sa-click-area0{background:hsla(60, 98%, 80%, .85)}.sa-click-area.sa-click-area1:before{background:rgba(255, 236, 142, .75);box-shadow:0 0 0 2px #ffec8e inset}img.sa-click-area.sa-click-area1{border:2px solid #ffec8e}.sa-click-area.sa-click-area1:hover:before,input.sa-click-area.sa-click-area1,textarea.sa-click-area.sa-click-area1{background:rgba(255, 236, 142, .85)}.sa-click-area.sa-click-area2:before{background:rgba(255, 188, 113, .75);box-shadow:0 0 0 2px #ffbc71 inset}img.sa-click-area.sa-click-area2{border:2px solid #ffbc71}.sa-click-area.sa-click-area2:hover:before,input.sa-click-area.sa-click-area2,textarea.sa-click-area.sa-click-area2{background:rgba(255, 188, 113, .85)}.sa-click-area.sa-click-area3:before{background:rgba(255, 120, 82, .75);box-shadow:0 0 0 2px #ff7852 inset}img.sa-click-area.sa-click-area3{border:2px solid #ff7852}.sa-click-area.sa-click-area3:hover:before,input.sa-click-area.sa-click-area3,textarea.sa-click-area.sa-click-area3{background:rgba(255, 120, 82, .85)}.sa-click-area.sa-click-area4:before{background:rgba(255, 65, 90, .75);box-shadow:0 0 0 2px #ff415a inset}img.sa-click-area.sa-click-area4{border:2px solid #ff415a}.sa-click-area.sa-click-area4:hover:before,input.sa-click-area.sa-click-area4,textarea.sa-click-area.sa-click-area4{background:rgba(255, 65, 90, .85)}.sa-click-area.sa-click-area5:before{background:rgba(199, 0, 18, .75);box-shadow:0 0 0 2px #c70012 inset}img.sa-click-area.sa-click-area5{border:2px solid #c70012}.sa-click-area.sa-click-area5:hover:before,input.sa-click-area.sa-click-area5,textarea.sa-click-area.sa-click-area5{background:rgba(199, 0, 18, .85)}.sa-click-area.sa-click-area6:before{background:rgba(127, 0, 79, .75);box-shadow:0 0 0 3px #7f004f inset}img.sa-click-area.sa-click-area6{border:2px solid #7f004f}.sa-click-area.sa-click-area6:hover:before,input.sa-click-area.sa-click-area6,textarea.sa-click-area.sa-click-area6{background:rgba(127, 0, 79, .85)}.sa-click-area .sa-click-area:before{background:0 0 !important}.sa-click-area:after{height:14px;line-height:14px;margin:-7px 0 0 -28px;width:56px;color:#fff;content:attr(data-click);font-size:14px;font-weight:700;left:50%;line-height:1em;position:absolute;text-align:center;text-indent:0;text-shadow:1px 1px 2px #000;top:50%;z-index:10}';
88888888

88898889
var style = document.createElement('style');
88908890
style.type = 'text/css';

src/sdk.js

Lines changed: 56 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2361,6 +2361,32 @@ saEvent.send = function(p, callback) {
23612361
getStayTime: function() {
23622362
return ((new Date()) - sd._t) / 1000;
23632363
},
2364+
setProfileLocal: function(obj){
2365+
if(!_.localStorage.isSupport()){
2366+
sd.setProfile(obj);
2367+
return false;
2368+
}
2369+
if(!_.isObject(obj) || _.isEmptyObject(obj)){
2370+
return false;
2371+
}
2372+
var saveData = _.localStorage.parse('sensorsdata_2015_jssdk_profile');
2373+
var isNeedSend = false;
2374+
if(_.isObject(saveData) && !_.isEmptyObject(saveData)){
2375+
for(var i in obj){
2376+
if((i in saveData && saveData[i] !== obj[i]) || !(i in saveData)){
2377+
saveData[i] = obj[i];
2378+
isNeedSend = true;
2379+
}
2380+
}
2381+
if(isNeedSend){
2382+
_.localStorage.set('sensorsdata_2015_jssdk_profile',JSON.stringify(saveData));
2383+
sd.setProfile(obj);
2384+
}
2385+
}else{
2386+
_.localStorage.set('sensorsdata_2015_jssdk_profile',JSON.stringify(obj));
2387+
sd.setProfile(obj);
2388+
}
2389+
},
23642390
//set init referrer
23652391
setInitReferrer: function() {
23662392
var _referrer = _.getReferrer();
@@ -2385,6 +2411,9 @@ saEvent.send = function(p, callback) {
23852411
_referring_host: _.info.pageProp.referrer_host
23862412
});
23872413
},
2414+
trackHeatmap: function(){
2415+
this.trackHeatMap.apply(arguments);
2416+
},
23882417
trackHeatMap: function(target){
23892418
if((typeof target === 'object') && target.tagName){
23902419
var tagName = target.tagName.toLowerCase();
@@ -2397,8 +2426,8 @@ saEvent.send = function(p, callback) {
23972426
autoTrackSinglePage:function(para,callback){
23982427
var url = _.info.pageProp.url;
23992428

2400-
function getUtm(){
2401-
var utms = _.info.campaignParams();
2429+
function getUtm(){
2430+
var utms = _.info.campaignParams();
24022431
var $utms = {};
24032432
for (var i in utms) {
24042433
if ((' ' + source_channel_standard + ' ').indexOf(' ' + i + ' ') !== -1) {
@@ -2904,7 +2933,31 @@ saEvent.send = function(p, callback) {
29042933
}
29052934
};
29062935
};
2936+
sd.getPresetProperties = function(){
2937+
function getUtm(){
2938+
var utms = _.info.campaignParams();
2939+
var $utms = {};
2940+
for (var i in utms) {
2941+
if ((' ' + source_channel_standard + ' ').indexOf(' ' + i + ' ') !== -1) {
2942+
$utms['$' + i] = utms[i];
2943+
} else {
2944+
$utms[i] = utms[i];
2945+
}
2946+
}
2947+
return $utms;
2948+
}
29072949

2950+
var obj = {
2951+
$referrer: typeof document.referrer === 'string' ? document.referrer.slice(0,100) : '',
2952+
$referrer_host: _.url('hostname',document.referrer) || '',
2953+
$url: location.href,
2954+
$url_path: location.pathname,
2955+
$title: document.title || '',
2956+
_distinct_id: store.getDistinctId()
2957+
}
2958+
2959+
return _.extend({}, _.info.properties(),sa.store.getProps(),getUtm(),obj);
2960+
};
29082961

29092962
var heatmap = {
29102963
getDomIndex: function (el){
@@ -3240,6 +3293,7 @@ saEvent.send = function(p, callback) {
32403293
if((!para && has_declare) || (para && !has_declare)){
32413294
sd.initPara(para);
32423295
sd._init();
3296+
sd.readyState = 2;
32433297
}
32443298
};
32453299

src/sensorsdata.full.amd.js

Lines changed: 57 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ var ObjProto = Object.prototype;
134134
var slice = ArrayProto.slice;
135135
var toString = ObjProto.toString;
136136
var hasOwnProperty = ObjProto.hasOwnProperty;
137-
var LIB_VERSION = '1.9.7';
137+
var LIB_VERSION = '1.9.8';
138138

139139
sd.lib_version = LIB_VERSION;
140140

@@ -2485,6 +2485,32 @@ saEvent.send = function(p, callback) {
24852485
getStayTime: function() {
24862486
return ((new Date()) - sd._t) / 1000;
24872487
},
2488+
setProfileLocal: function(obj){
2489+
if(!_.localStorage.isSupport()){
2490+
sd.setProfile(obj);
2491+
return false;
2492+
}
2493+
if(!_.isObject(obj) || _.isEmptyObject(obj)){
2494+
return false;
2495+
}
2496+
var saveData = _.localStorage.parse('sensorsdata_2015_jssdk_profile');
2497+
var isNeedSend = false;
2498+
if(_.isObject(saveData) && !_.isEmptyObject(saveData)){
2499+
for(var i in obj){
2500+
if((i in saveData && saveData[i] !== obj[i]) || !(i in saveData)){
2501+
saveData[i] = obj[i];
2502+
isNeedSend = true;
2503+
}
2504+
}
2505+
if(isNeedSend){
2506+
_.localStorage.set('sensorsdata_2015_jssdk_profile',JSON.stringify(saveData));
2507+
sd.setProfile(obj);
2508+
}
2509+
}else{
2510+
_.localStorage.set('sensorsdata_2015_jssdk_profile',JSON.stringify(obj));
2511+
sd.setProfile(obj);
2512+
}
2513+
},
24882514
//set init referrer
24892515
setInitReferrer: function() {
24902516
var _referrer = _.getReferrer();
@@ -2509,6 +2535,9 @@ saEvent.send = function(p, callback) {
25092535
_referring_host: _.info.pageProp.referrer_host
25102536
});
25112537
},
2538+
trackHeatmap: function(){
2539+
this.trackHeatMap.apply(arguments);
2540+
},
25122541
trackHeatMap: function(target){
25132542
if((typeof target === 'object') && target.tagName){
25142543
var tagName = target.tagName.toLowerCase();
@@ -2521,8 +2550,8 @@ saEvent.send = function(p, callback) {
25212550
autoTrackSinglePage:function(para,callback){
25222551
var url = _.info.pageProp.url;
25232552

2524-
function getUtm(){
2525-
var utms = _.info.campaignParams();
2553+
function getUtm(){
2554+
var utms = _.info.campaignParams();
25262555
var $utms = {};
25272556
for (var i in utms) {
25282557
if ((' ' + source_channel_standard + ' ').indexOf(' ' + i + ' ') !== -1) {
@@ -3028,7 +3057,31 @@ saEvent.send = function(p, callback) {
30283057
}
30293058
};
30303059
};
3060+
sd.getPresetProperties = function(){
3061+
function getUtm(){
3062+
var utms = _.info.campaignParams();
3063+
var $utms = {};
3064+
for (var i in utms) {
3065+
if ((' ' + source_channel_standard + ' ').indexOf(' ' + i + ' ') !== -1) {
3066+
$utms['$' + i] = utms[i];
3067+
} else {
3068+
$utms[i] = utms[i];
3069+
}
3070+
}
3071+
return $utms;
3072+
}
30313073

3074+
var obj = {
3075+
$referrer: typeof document.referrer === 'string' ? document.referrer.slice(0,100) : '',
3076+
$referrer_host: _.url('hostname',document.referrer) || '',
3077+
$url: location.href,
3078+
$url_path: location.pathname,
3079+
$title: document.title || '',
3080+
_distinct_id: store.getDistinctId()
3081+
}
3082+
3083+
return _.extend({}, _.info.properties(),sa.store.getProps(),getUtm(),obj);
3084+
};
30323085

30333086
var heatmap = {
30343087
getDomIndex: function (el){
@@ -3364,6 +3417,7 @@ saEvent.send = function(p, callback) {
33643417
if((!para && has_declare) || (para && !has_declare)){
33653418
sd.initPara(para);
33663419
sd._init();
3420+
sd.readyState = 2;
33673421
}
33683422
};
33693423

src/sensorsdata.full.js

Lines changed: 57 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ var ObjProto = Object.prototype;
131131
var slice = ArrayProto.slice;
132132
var toString = ObjProto.toString;
133133
var hasOwnProperty = ObjProto.hasOwnProperty;
134-
var LIB_VERSION = '1.9.7';
134+
var LIB_VERSION = '1.9.8';
135135

136136
sd.lib_version = LIB_VERSION;
137137

@@ -2482,6 +2482,32 @@ saEvent.send = function(p, callback) {
24822482
getStayTime: function() {
24832483
return ((new Date()) - sd._t) / 1000;
24842484
},
2485+
setProfileLocal: function(obj){
2486+
if(!_.localStorage.isSupport()){
2487+
sd.setProfile(obj);
2488+
return false;
2489+
}
2490+
if(!_.isObject(obj) || _.isEmptyObject(obj)){
2491+
return false;
2492+
}
2493+
var saveData = _.localStorage.parse('sensorsdata_2015_jssdk_profile');
2494+
var isNeedSend = false;
2495+
if(_.isObject(saveData) && !_.isEmptyObject(saveData)){
2496+
for(var i in obj){
2497+
if((i in saveData && saveData[i] !== obj[i]) || !(i in saveData)){
2498+
saveData[i] = obj[i];
2499+
isNeedSend = true;
2500+
}
2501+
}
2502+
if(isNeedSend){
2503+
_.localStorage.set('sensorsdata_2015_jssdk_profile',JSON.stringify(saveData));
2504+
sd.setProfile(obj);
2505+
}
2506+
}else{
2507+
_.localStorage.set('sensorsdata_2015_jssdk_profile',JSON.stringify(obj));
2508+
sd.setProfile(obj);
2509+
}
2510+
},
24852511
//set init referrer
24862512
setInitReferrer: function() {
24872513
var _referrer = _.getReferrer();
@@ -2506,6 +2532,9 @@ saEvent.send = function(p, callback) {
25062532
_referring_host: _.info.pageProp.referrer_host
25072533
});
25082534
},
2535+
trackHeatmap: function(){
2536+
this.trackHeatMap.apply(arguments);
2537+
},
25092538
trackHeatMap: function(target){
25102539
if((typeof target === 'object') && target.tagName){
25112540
var tagName = target.tagName.toLowerCase();
@@ -2518,8 +2547,8 @@ saEvent.send = function(p, callback) {
25182547
autoTrackSinglePage:function(para,callback){
25192548
var url = _.info.pageProp.url;
25202549

2521-
function getUtm(){
2522-
var utms = _.info.campaignParams();
2550+
function getUtm(){
2551+
var utms = _.info.campaignParams();
25232552
var $utms = {};
25242553
for (var i in utms) {
25252554
if ((' ' + source_channel_standard + ' ').indexOf(' ' + i + ' ') !== -1) {
@@ -3025,7 +3054,31 @@ saEvent.send = function(p, callback) {
30253054
}
30263055
};
30273056
};
3057+
sd.getPresetProperties = function(){
3058+
function getUtm(){
3059+
var utms = _.info.campaignParams();
3060+
var $utms = {};
3061+
for (var i in utms) {
3062+
if ((' ' + source_channel_standard + ' ').indexOf(' ' + i + ' ') !== -1) {
3063+
$utms['$' + i] = utms[i];
3064+
} else {
3065+
$utms[i] = utms[i];
3066+
}
3067+
}
3068+
return $utms;
3069+
}
30283070

3071+
var obj = {
3072+
$referrer: typeof document.referrer === 'string' ? document.referrer.slice(0,100) : '',
3073+
$referrer_host: _.url('hostname',document.referrer) || '',
3074+
$url: location.href,
3075+
$url_path: location.pathname,
3076+
$title: document.title || '',
3077+
_distinct_id: store.getDistinctId()
3078+
}
3079+
3080+
return _.extend({}, _.info.properties(),sa.store.getProps(),getUtm(),obj);
3081+
};
30293082

30303083
var heatmap = {
30313084
getDomIndex: function (el){
@@ -3361,6 +3414,7 @@ saEvent.send = function(p, callback) {
33613414
if((!para && has_declare) || (para && !has_declare)){
33623415
sd.initPara(para);
33633416
sd._init();
3417+
sd.readyState = 2;
33643418
}
33653419
};
33663420

version.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
var sensorsdata_js_sdk_latest_version = '1.9.7';
1+
var sensorsdata_js_sdk_latest_version = '1.9.8';

vtrack.min.js

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

0 commit comments

Comments
 (0)