@@ -59,13 +59,22 @@ if(typeof JSON!=='object'){JSON={}}(function(){'use strict';var rx_one=/^[\],:{}
5959 use_app_track : false
6060
6161 } ;
62+ var i ;
6263 // 合并配置
63- for ( var i in sd . para_default ) {
64+ for ( i in sd . para_default ) {
6465 if ( sd . para [ i ] === void 0 ) {
6566 sd . para [ i ] = sd . para_default [ i ] ;
6667 }
6768 }
6869 // 优化配置
70+ if ( typeof sd . para . server_url === 'object' && sd . para . server_url . length ) {
71+ for ( i = 0 ; i < sd . para . server_url . length ; i ++ ) {
72+ if ( ! / s a \. g i f [ ^ \/ ] * $ / . test ( sd . para . server_url [ i ] ) ) {
73+ sd . para . server_url [ i ] = sd . para . server_url [ i ] . replace ( / \/ s a $ / , '/sa.gif' ) . replace ( / ( \/ s a ) ( \? [ ^ \/ ] + ) $ / , '/sa.gif$2' ) ;
74+ }
75+ }
76+ }
77+
6978 if ( ! / s a \. g i f [ ^ \/ ] * $ / . test ( sd . para . server_url ) ) {
7079 sd . para . server_url = sd . para . server_url . replace ( / \/ s a $ / , '/sa.gif' ) . replace ( / ( \/ s a ) ( \? [ ^ \/ ] + ) $ / , '/sa.gif$2' ) ;
7180 }
@@ -84,7 +93,7 @@ if(typeof JSON!=='object'){JSON={}}(function(){'use strict';var rx_one=/^[\],:{}
8493 , slice = ArrayProto . slice
8594 , toString = ObjProto . toString
8695 , hasOwnProperty = ObjProto . hasOwnProperty
87- , LIB_VERSION = '1.7.13 ' ;
96+ , LIB_VERSION = '1.7.14 ' ;
8897
8998sd . lib_version = LIB_VERSION ;
9099
@@ -1354,6 +1363,23 @@ _.ry.init.prototype = {
13541363 this . ele . parentNode . insertBefore ( ele , this . ele ) ;
13551364 ele . appendChild ( this . ele ) ;
13561365 return _ . ry ( ele ) ;
1366+ } ,
1367+ getCssStyle : function ( prop ) {
1368+ var result = this . ele . style . getPropertyValue ( prop ) ;
1369+ if ( result ) {
1370+ return result ;
1371+ }
1372+ var rules = getMatchedCSSRules ( this . ele ) ;
1373+ if ( ! rules || ! _ . isArray ( rules ) ) {
1374+ return null ;
1375+ }
1376+ for ( var i = rules . length - 1 ; i >= 0 ; i -- ) {
1377+ var r = rules [ i ] ;
1378+ result = r . style . getPropertyValue ( prop ) ;
1379+ if ( result ) {
1380+ return result ;
1381+ }
1382+ }
13571383 }
13581384} ;
13591385
@@ -1485,28 +1511,61 @@ sd.sendState.getSendCall = function(data, callback) {
14851511 ( typeof callback === 'function' ) && callback ( ) ;
14861512 return false ;
14871513 }
1488-
14891514 logger . info ( data ) ;
1515+ this . prepareServerUrl ( data , callback ) ;
1516+ } ;
1517+
1518+ sd . sendState . prepareServerUrl = function ( data , callback ) {
1519+ if ( _ . isArray ( sd . para . server_url ) ) {
1520+ for ( var i = 0 ; i < sd . para . server_url . length ; i ++ ) {
1521+ if ( sd . para . server_url [ i ] . indexOf ( '?' ) !== - 1 ) {
1522+ this . sendCall ( sd . para . server_url [ i ] + '&data=' + encodeURIComponent ( _ . base64Encode ( data ) ) , callback ) ;
1523+ } else {
1524+ this . senCall ( sd . para . server_url [ i ] + '?data=' + encodeURIComponent ( _ . base64Encode ( data ) ) , callback ) ;
1525+ }
1526+ }
1527+ } else {
1528+ if ( sd . para . server_url . indexOf ( '?' ) !== - 1 ) {
1529+ this . sendCall ( sd . para . server_url + '&data=' + encodeURIComponent ( _ . base64Encode ( data ) ) , callback ) ;
1530+ } else {
1531+ this . sendCall ( sd . para . server_url + '?data=' + encodeURIComponent ( _ . base64Encode ( data ) ) , callback ) ;
1532+ }
1533+ }
1534+ } ;
1535+
1536+ sd . sendState . callBack = function ( callback ) {
1537+
1538+ ( typeof callback === 'function' ) && callback ( ) ;
1539+
1540+ } ;
1541+
1542+ sd . sendState . sendCall = function ( server_url , callback ) {
1543+
14901544
14911545 ++ this . _receive ;
14921546 var state = '_state' + this . _receive ;
14931547 var me = this ;
14941548 this [ state ] = document . createElement ( 'img' ) ;
1495- this [ state ] . onload = this [ state ] . onerror = function ( e ) {
1549+
1550+ this [ state ] . onload = function ( e ) {
14961551 me [ state ] . onload = null ;
1497- me [ state ] . onerror = null ;
14981552 delete me [ state ] ;
14991553 ++ me . _complete ;
1500- ( typeof callback === 'function' ) && callback ( ) ;
1554+ me . callBack ( callback ) ;
1555+ } ;
1556+ this [ state ] . onerror = function ( e ) {
1557+ me [ state ] . onerror = null ;
1558+ delete me [ state ] ;
1559+ me . callBack ( callback ) ;
1560+ } ;
1561+ this [ state ] . onabort = function ( e ) {
1562+ delete me [ state ] ;
1563+ me . callBack ( callback ) ;
15011564 } ;
15021565
1503- if ( sd . para . server_url . indexOf ( '?' ) !== - 1 ) {
1504- this [ state ] . src = sd . para . server_url + '&data=' + encodeURIComponent ( _ . base64Encode ( data ) ) ;
1505- } else {
1506- this [ state ] . src = sd . para . server_url + '?data=' + encodeURIComponent ( _ . base64Encode ( data ) ) ;
1507- }
1508- } ;
1566+ this [ state ] . src = server_url ;
15091567
1568+ } ;
15101569
15111570// 检查是否是新用户(第一次种cookie,且在8个小时内的)
15121571var saNewUser = {
@@ -2342,6 +2401,9 @@ saEvent.send = function(p, callback) {
23422401 * @param {string } distinct_id
23432402 * */
23442403 sd . identify = function ( id , isSave ) {
2404+ if ( typeof id === 'number' ) {
2405+ id = String ( id ) ;
2406+ }
23452407 var firstId = store . getFirstId ( ) ;
23462408 if ( typeof id === 'undefined' ) {
23472409 if ( firstId ) {
@@ -2449,6 +2511,9 @@ saEvent.send = function(p, callback) {
24492511 } ;
24502512
24512513 sd . login = function ( id ) {
2514+ if ( typeof id === 'number' ) {
2515+ id = String ( id ) ;
2516+ }
24522517 if ( saEvent . check ( { distinct_id : id } ) ) {
24532518 var firstId = store . getFirstId ( ) ;
24542519 var distinctId = store . getDistinctId ( ) ;
@@ -2730,9 +2795,15 @@ var heatmap_render = {
27302795 } ,
27312796 renderHeatData : function ( selector , data , key ) {
27322797 var dom = _ . ry ( selector [ 0 ] ) ;
2798+ // 优化input不支持伪类的样式
27332799 if ( dom . ele . tagName . toLowerCase ( ) === 'input' || dom . ele . tagName . toLowerCase ( ) === 'textarea' ) {
2734- dom = dom . wrap ( 'span' ) ;
2735- dom . ele . style . display = 'inline-block' ;
2800+ var width = dom . getCssStyle ( 'width' ) ;
2801+ dom = dom . wrap ( 'span' ) ;
2802+ if ( typeof width === 'string' && width . slice ( - 1 ) === '%' ) {
2803+ dom . ele . style . width = width ;
2804+ }
2805+ dom . ele . style . display = 'inline-block' ;
2806+
27362807 }
27372808 this . heatDataElement . push ( dom ) ;
27382809 dom . attr ( 'data-heat-place' , String ( key ) )
@@ -3029,7 +3100,7 @@ var heatmap_render = {
30293100
30303101 } ,
30313102 setCssStyle : function ( ) {
3032- var css = '.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}100%{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:rgba(254,254,155,.75);box-shadow:0 0 0 2px rgba(254,254,155,1) inset}.sa-click-area.sa-click-area0:hover::before{background:rgba(254,254,155,.85)}.sa-click-area.sa-click-area1:before{background:rgba(255,236,142,.75);box-shadow:0 0 0 2px rgba(255,236,142,1) inset}.sa-click-area.sa-click-area1:hover::before{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 rgba(255,188,113,1) inset}.sa-click-area.sa-click-area2:hover::before{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 rgba(255,120,82,1) inset}.sa-click-area.sa-click-area3:hover::before{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 rgba(255,65,90,1) inset}.sa-click-area.sa-click-area4:hover::before{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 rgba(199,0,18,1) inset}.sa-click-area.sa-click-area5:hover::before{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 rgba(127,0,79,1) inset}.sa-click-area.sa-click-area6:hover::before{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}' ;
3103+ var css = '.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}.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}.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}.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}.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}.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}.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}.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}' ;
30333104
30343105 var style = document . createElement ( 'style' ) ;
30353106 style . type = 'text/css' ;
0 commit comments