@@ -19,7 +19,8 @@ sa.para = {
1919 pageShow : true ,
2020 pageShare : true ,
2121 mpClick : false ,
22- mpFavorite : true
22+ mpFavorite : true ,
23+ pageLeave : false
2324 } ,
2425 autotrack_exclude_page : {
2526 pageShow : [ ] ,
@@ -159,13 +160,14 @@ var ArrayProto = Array.prototype,
159160 slice = ArrayProto . slice ,
160161 toString = ObjProto . toString ,
161162 hasOwnProperty = ObjProto . hasOwnProperty ,
162- LIB_VERSION = '1.14.19 ' ,
163+ LIB_VERSION = '1.14.20 ' ,
163164 LIB_NAME = 'MiniProgram' ;
164165
165166var source_channel_standard = 'utm_source utm_medium utm_campaign utm_content utm_term' ;
166167var latest_source_channel = [ '$latest_utm_source' , '$latest_utm_medium' , '$latest_utm_campaign' , '$latest_utm_content' , '$latest_utm_term' , '$latest_sa_utm' ] ;
167168var latest_share_info = [ '$latest_share_distinct_id' , '$latest_share_url_path' , '$latest_share_depth' , '$latest_share_method' ] ;
168169var share_info_key = [ 'sensors_share_d' , 'sensors_share_p' , 'sensors_share_i' , 'sensors_share_m' ] ;
170+ var page_show_time = Date . now ( ) ;
169171
170172var mpshow_time = null ;
171173
@@ -2269,6 +2271,28 @@ _.getUtmFromPage = function() {
22692271 return newObj ;
22702272} ;
22712273
2274+ _ . sendPageLeave = function ( ) {
2275+ var currentPage = { } ;
2276+ try {
2277+ var pages = getCurrentPages ( ) ;
2278+ currentPage = pages [ pages . length - 1 ] ;
2279+ } catch ( error ) {
2280+ logger . info ( error )
2281+ } ;
2282+ var router = currentPage . route ;
2283+ if ( page_show_time >= 0 && router !== '' ) {
2284+ var prop = { } ;
2285+ var title = _ . getPageTitle ( router ) ;
2286+ var page_stay_time = ( Date . now ( ) - page_show_time ) / 1000 ;
2287+ prop . $url_query = currentPage . sensors_mp_url_query ? currentPage . sensors_mp_url_query : '' ;
2288+ prop . $url_path = router ;
2289+ prop . $title = title ;
2290+ prop . event_duration = page_stay_time ;
2291+ sa . track ( '$MPPageLeave' , prop ) ;
2292+ page_show_time = - 1
2293+ }
2294+ }
2295+
22722296
22732297function mp_proxy ( option , method , identifier ) {
22742298 var newFunc = sa . autoTrackCustom [ identifier ] ;
@@ -2369,6 +2393,23 @@ function tabProxy(option) {
23692393 }
23702394}
23712395
2396+ function pageLeaveProxy ( option ) {
2397+ var oldHide = option [ 'onHide' ] ;
2398+ option [ 'onHide' ] = function ( ) {
2399+ if ( oldHide ) {
2400+ oldHide . apply ( this , arguments ) ;
2401+ }
2402+ _ . sendPageLeave ( ) ;
2403+ } ;
2404+ var oldUnload = option [ 'onUnload' ] ;
2405+ option [ 'onUnload' ] = function ( ) {
2406+ if ( oldUnload ) {
2407+ oldUnload . apply ( this , arguments ) ;
2408+ }
2409+ _ . sendPageLeave ( ) ;
2410+ }
2411+ }
2412+
23722413
23732414sa . autoTrackCustom = {
23742415 trackCustom : function ( api , prop , event ) {
@@ -2517,6 +2558,7 @@ sa.autoTrackCustom = {
25172558 }
25182559 } ,
25192560 pageShow : function ( ) {
2561+ page_show_time = Date . now ( ) ;
25202562 var prop = { } ;
25212563 var router = _ . getCurrentPath ( ) ;
25222564 var title = _ . getPageTitle ( router ) ;
@@ -2831,6 +2873,10 @@ Page = function(option) {
28312873 tabProxy ( option ) ;
28322874 }
28332875
2876+ if ( sa . para . autoTrack && sa . para . autoTrack . pageLeave ) {
2877+ pageLeaveProxy ( option )
2878+ }
2879+
28342880 mp_proxy ( option , "onLoad" , 'pageLoad' ) ;
28352881 mp_proxy ( option , "onShow" , 'pageShow' ) ;
28362882 mp_proxy ( option , "onAddToFavorites" , 'pageAddFavorites' ) ;
@@ -2858,6 +2904,10 @@ Component = function(option) {
28582904 tabProxy ( option . methods ) ;
28592905 }
28602906
2907+ if ( sa . para . autoTrack && sa . para . autoTrack . pageLeave ) {
2908+ pageLeaveProxy ( option . methods )
2909+ }
2910+
28612911 mp_proxy ( option . methods , 'onLoad' , 'pageLoad' ) ;
28622912 mp_proxy ( option . methods , 'onShow' , 'pageShow' ) ;
28632913 mp_proxy ( option . methods , "onAddToFavorites" , 'pageAddFavorites' ) ;
0 commit comments