Your achievements

Level 1

0% to

Level 2

Tip /
Sign in

Sign in to Community

to gain points, level up, and earn exciting badges like the new
BedrockMission!

Learn more

View all

Sign in to view all badges

SOLVED

Adobe Analytics Plugins in DTM on SPA platform

guidov61672237
Level 2
Level 2

Hello,

We have DTM installed on a SPA platform. The problem I have is that the days since last visit plugin does not seems to work because of the return false function we use to supress the initial page load beacon. 

This is the customer code we use on tool level:

 

return false

s.abort = true;

s.usePlugins=true
s.doPlugins=function(s) {
/* Add calls to plugins here */
s.prop45 = s.getDaysSinceLastVisit('dslv');
s.eVar45 = s.getDaysSinceLastVisit('dslv');
}

/* Plugin: Days since last Visit 1.1 - capture time from last visit*/
s.getDaysSinceLastVisit=new Function("c",""
+"var s=this,e=new Date(),es=new Date(),cval,cval_s,cval_ss,ct=e.getT"
+"ime(),day=24*60*60*1000,f1,f2,f3,f4,f5;e.setTime(ct+3*365*day);es.s"
+"etTime(ct+30*60*1000);f0='Cookies Not Supported';f1='First Visit';f"
+"2='More than 30 days';f3='More than 7 days';f4='Less than 7 days';f"
+"5='Less than 1 day';cval=s.c_r(c);if(cval.length==0){s.c_w(c,ct,e);"
+"s.c_w(c+'_s',f1,es);}else{var d=ct-cval;if(d>30*60*1000){if(d>30*da"
+"y){s.c_w(c,ct,e);s.c_w(c+'_s',f2,es);}else if(d<30*day+1 && d>7*day"
+"){s.c_w(c,ct,e);s.c_w(c+'_s',f3,es);}else if(d<7*day+1 && d>day){s."
+"c_w(c,ct,e);s.c_w(c+'_s',f4,es);}else if(d<day+1){s.c_w(c,ct,e);s.c"
+"_w(c+'_s',f5,es);}}else{s.c_w(c,ct,e);cval_ss=s.c_r(c+'_s');s.c_w(c"
+"+'_s',cval_ss,es);}}cval_s=s.c_r(c+'_s');if(cval_s.length==0) retur"
+"n f0;else if(cval_s!=f1&&cval_s!=f2&&cval_s!=f3&&cval_s!=f4&&cval_s"
+"!=f5) return '';else return cval_s;");

 

Regards,


Guido

1 Accepted Solution
ParitMittal
Correct answer by
Level 10
Level 10

Hi Guidov, 

The issue is that you are using both return false & s.abort=true in your code However the purpose of both is the same and importantly the s.abort=true or return false should be the last line of your customize code and  execute the code by selecting the radio button "After UI settings takes place"  Hence your code should look like below. 

We have also tested the same at our end and it is working .
s.usePlugins=true s.doPlugins=function(s) { /* Add calls to plugins here */ s.prop45 = s.getDaysSinceLastVisit('dslv'); s.eVar45 = s.getDaysSinceLastVisit('dslv'); } /* Plugin: Days since last Visit 1.1 - capture time from last visit*/ s.getDaysSinceLastVisit=new Function("c","" +"var s=this,e=new Date(),es=new Date(),cval,cval_s,cval_ss,ct=e.getT" +"ime(),day=24*60*60*1000,f1,f2,f3,f4,f5;e.setTime(ct+3*365*day);es.s" +"etTime(ct+30*60*1000);f0='Cookies Not Supported';f1='First Visit';f" +"2='More than 30 days';f3='More than 7 days';f4='Less than 7 days';f" +"5='Less than 1 day';cval=s.c_r(c);if(cval.length==0){s.c_w(c,ct,e);" +"s.c_w(c+'_s',f1,es);}else{var d=ct-cval;if(d>30*60*1000){if(d>30*da" +"y){s.c_w(c,ct,e);s.c_w(c+'_s',f2,es);}else if(d<30*day+1 && d>7*day" +"){s.c_w(c,ct,e);s.c_w(c+'_s',f3,es);}else if(d<7*day+1 && d>day){s." +"c_w(c,ct,e);s.c_w(c+'_s',f4,es);}else if(d<day+1){s.c_w(c,ct,e);s.c" +"_w(c+'_s',f5,es);}}else{s.c_w(c,ct,e);cval_ss=s.c_r(c+'_s');s.c_w(c" +"+'_s',cval_ss,es);}}cval_s=s.c_r(c+'_s');if(cval_s.length==0) retur" +"n f0;else if(cval_s!=f1&&cval_s!=f2&&cval_s!=f3&&cval_s!=f4&&cval_s" +"!=f5) return '';else return cval_s;"); s.abort = true;

Thanks & Regards

Parit Mittal

View solution in original post

3 Replies
ParitMittal
Level 10
Level 10

Hi Guido ,

Can you please add return false; after the plugin code i.e. return false should generally be last line in a piece of  custom code and check if this works .

Thanks & Regards

Parit Mittal

guidov61672237
Level 2
Level 2

Hi Parit,

I followed your instructions, but now the beacon is not being suppressed. Do you have another solution?

Regards,


Guido

ParitMittal
Correct answer by
Level 10
Level 10

Hi Guidov, 

The issue is that you are using both return false & s.abort=true in your code However the purpose of both is the same and importantly the s.abort=true or return false should be the last line of your customize code and  execute the code by selecting the radio button "After UI settings takes place"  Hence your code should look like below. 

We have also tested the same at our end and it is working .
s.usePlugins=true s.doPlugins=function(s) { /* Add calls to plugins here */ s.prop45 = s.getDaysSinceLastVisit('dslv'); s.eVar45 = s.getDaysSinceLastVisit('dslv'); } /* Plugin: Days since last Visit 1.1 - capture time from last visit*/ s.getDaysSinceLastVisit=new Function("c","" +"var s=this,e=new Date(),es=new Date(),cval,cval_s,cval_ss,ct=e.getT" +"ime(),day=24*60*60*1000,f1,f2,f3,f4,f5;e.setTime(ct+3*365*day);es.s" +"etTime(ct+30*60*1000);f0='Cookies Not Supported';f1='First Visit';f" +"2='More than 30 days';f3='More than 7 days';f4='Less than 7 days';f" +"5='Less than 1 day';cval=s.c_r(c);if(cval.length==0){s.c_w(c,ct,e);" +"s.c_w(c+'_s',f1,es);}else{var d=ct-cval;if(d>30*60*1000){if(d>30*da" +"y){s.c_w(c,ct,e);s.c_w(c+'_s',f2,es);}else if(d<30*day+1 && d>7*day" +"){s.c_w(c,ct,e);s.c_w(c+'_s',f3,es);}else if(d<7*day+1 && d>day){s." +"c_w(c,ct,e);s.c_w(c+'_s',f4,es);}else if(d<day+1){s.c_w(c,ct,e);s.c" +"_w(c+'_s',f5,es);}}else{s.c_w(c,ct,e);cval_ss=s.c_r(c+'_s');s.c_w(c" +"+'_s',cval_ss,es);}}cval_s=s.c_r(c+'_s');if(cval_s.length==0) retur" +"n f0;else if(cval_s!=f1&&cval_s!=f2&&cval_s!=f3&&cval_s!=f4&&cval_s" +"!=f5) return '';else return cval_s;"); s.abort = true;

Thanks & Regards

Parit Mittal

View solution in original post