Hello team, we are using the getPercentPageViewed plugin v3.01 and meet the following case:
Installation
1. Added the plugin code in Plugin Section:
/* Adobe Consulting Plugin: getPercentPageViewed v3.01 w/handlePPVevents helper function (Requires AppMeasurement and p_fo plugin) */
s.getPercentPageViewed=function(pid,ch){var s=this,a=s.c_r("s_ppv");a=-1<a.indexOf(",")?a.split(","):[];a[0]=s.unescape(a[0]);
pid=pid?pid:s.pageName?s.pageName:document.location.href;s.ppvChange=ch?ch:!0;if("undefined"===typeof s.linkType||"o"!==
s.linkType)s.ppvID&&s.ppvID===pid||(s.ppvID=pid,s.c_w("s_ppv",""),s.handlePPVevents()),s.p_fo("s_gppvLoad")&&window
.addEventListener&&(window.addEventListener("load",s.handlePPVevents,!1),window.addEventListener("click",s.handlePPVevents, !1),window.addEventListener("scroll",s.handlePPVevents,!1),window.addEventListener("resize",s.handlePPVevents,!1)),s._ppvPreviousPage=a[0]?a[0]:"",s._ppvHighestPercentViewed=a[1]?a[1]:"",s._ppvInitialPercentViewed=a[2]?a[2]:"",s._ppvHighestPixelsSeen=a[3]?a[3]:""};
/* Adobe Consulting Plugin: handlePPVevents helper function (for getPercentPageViewed v3.01 Plugin) */
s.handlePPVevents=function(){if("undefined"!==typeof s_c_il){for(var c=0,d=s_c_il.length;c<d;c++)if(s_c_il[c]&&s_c_il[c].getPercentPageViewed){var a=s_c_il[c];break}if(a&&a.ppvID){var f=Math.max(Math.max(document.body.scrollHeight,document.documentElement.scrollHeight),Math.max(document.body.offsetHeight,document.documentElement.offsetHeight),Math.max(document.
body.clientHeight,document.documentElement.clientHeight));c=(window.pageYOffset||window.document.documentElement.scrollTop||window.document.body.scrollTop)+(window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight);d=Math.min(Math.round
(c/f*100),100);var e="";!a.c_r("s_tp")||a.unescape(a.c_r("s_ppv").split(",")[0])!==a.ppvID||1==a.ppvChange&&
a.c_r("s_tp")&&f!= a.c_r("s_tp")?(a.c_w("s_tp",f),a.c_w("s_ppv","")):e=a.c_r("s_ppv");var b=e&&-1<e.indexOf(",")?e.split(",",4):[];f=0<b.length?b[0]:escape(a.ppvID);var g=1<b.length?parseInt(b[1]):d,h=2<b.length?parseInt(b[2]):d;b=3<b.length?parseInt(b[3]):c;0<d&&(e=f+","+(d>g?d:g)+","+h+","+(c>b?c:b));a.c_w("s_ppv",e)}}};
/* Adobe Consulting Plugin: p_fo (pageFirstOnly) v2.0 (Requires AppMeasurement) */
s.p_fo=function(on){var s=this;s.__fo||(s.__fo={});if(s.__fo[on])return!1;s.__fo[on]={};return!0};
2. Added initialization code in doPlugin section:
if(s.pageName)
s.getPercentPageViewed();
if(s._ppvPreviousPage)
s.eVar10 = s._ppvHighestPercentViewed;
Testing
When the page is loading all is okay - pageview tag fires. But when you do hard refresh (ctrl + f5) - pageview tag doesn't load. I strongly confident it's cased by this plugin because if we disable it, the problem doesn't appear.
Can someone please describe why it happens and how to fix it.
Hi Cathy,
Please use the below code
var loadRule = true; if(window.performance)
{ //Reload of page if(performance.navigation.type == 1 ){ loadRule = false; } } return loadRule;
Also, put this custom code in a Data Element to reuse it in all of your rules: example data element : loadRule
//Place in condition of any rule return _satellite.getVar("loadRule");
Regards,
Kumararaja K
Views
Replies
Total Likes
It doesn't work
Views
Replies
Total Likes
Dear Cathy,
Try the below code, also can you share link to explore your issue.
/*
* Plugin: getPreviousValue_v1.0 - return previous value of designated
* variable (requires split utility)
*/
s.getPreviousValue=new Function("v","c","el",""
+"var s=this,t=new Date,i,j,r='';t.setTime(t.getTime()+1800000);if(el"
+"){if(s.events){i=s.split(el,',');j=s.split(s.events,',');for(x in i"
+"){for(y in j){if(i[x]==j[y]){if(s.c_r(c)) r=s.c_r(c);v?s.c_w(c,v,t)"
+":s.c_w(c,'no value',t);return r}}}}}else{if(s.c_r(c)) r=s.c_r(c);v?"
+"s.c_w(c,v,t):s.c_w(c,'no value',t);return r}");
/*
* Utility Function: split v1.5 - split a string (JS 1.0 compatible)
*/
s.split=new Function("l","d",""
+"var i,x=0,a=new Array;while(l){i=l.indexOf(d);i=i>-1?i:l.length;a[x"
+"++]=l.substring(0,i);l=l.substring(i+d.length);}return a");
/* Adobe Consulting Plugin: getPercentPageViewed v3.01 w/handlePPVevents helper function (Requires AppMeasurement and p_fo plugin) */
s.getPercentPageViewed=function(pid,ch){var s=this,a=s.c_r("s_ppv");a=-1<a.indexOf(",")?a.split(","):[];a[0]=s.unescape(a[0]);
pid=pid?pid:s.pageName?s.pageName:document.location.href;s.ppvChange=ch?ch:!0;if("undefine d"===typeof s.linkType||"o"!==
s.linkType)s.ppvID&&s.ppvID===pid||(s.ppvID=pid,s.c_w("s_ppv",""),s.handlePPVevents()),s.p _fo("s_gppvLoad")&&window
.addEventListener&&(window.addEventListener("load",s.handlePPVevents,!1),window.addEventLi stener("click",s.handlePPVevents, !1),window.addEventListener("scroll",s.handlePPVevents,!1),window.addEventListener("resiz e",s.handlePPVevents,!1)),s._ppvPreviousPage
=a[0]?a[0]:"",s._ppvHighestPercentViewed=a[1]?a[1]:"",s._ppvInitialPercentViewed=a[2]?a[2] :"",s._ppvHighestPixelsSeen=a[3]?a[3]:""};
/* Adobe Consulting Plugin: handlePPVevents helper function (for getPercentPageViewed v3.01 Plugin) */
s.handlePPVevents=function(){if("undefined"!==typeof s_c_il){for(var c=0,d=s_c_il.length;c<d;c++)if(s_c_il[c]&&
s_c_il[c].getPercentPageViewed){var a=s_c_il[c];break}if(a&&a.ppvID){var f=Math.max(Math.max(document.body.scrollHeight,
document.documentElement.scrollHeight),Math.max(document.body.offsetHeight,document.docume ntElement.offsetHeight),Math.max(document.
body.clientHeight,document.documentElement.clientHeight));c=(window.pageYOffset||window.do cument.documentElement.scrollTop||window.document.body.scrollTop)+(window.innerHeight||doc ument.documentElement.clientHeight||document.body.clientHeight);d=Math.min(Math.round
(c/f*100),100);var e="";!a.c_r("s_tp")||a.unescape(a.c_r("s_ppv").split(",")[0])!==a.ppvID||1==a.ppvChange&&
a.c_r("s_tp")&&f!= a.c_r("s_tp")?(a.c_w("s_tp",f),a.c_w("s_ppv","")):e=a.c_r("s_ppv");var b=e&&-1<e.indexOf(",")?e.split(",",4):[];f=0<b.length?b[0]:
escape(a.ppvID);var g=1<b.length?parseInt(b[1]):d,h=2<b.length?parseInt(b[2]):d;b=3<b.length?parseInt(b[3]):c ;0<d&&(e=f+","
+(d>g?d:g)+","+h+","+(c>b?c:b));a.c_w("s_ppv",e)}}};
/* Adobe Consulting Plugin: p_fo (pageFirstOnly) v2.0 (Requires AppMeasurement) */
s.p_fo=function(on){var s=this;s.__fo||(s.__fo={});if(s.__fo[on])return!1;s.__fo[on]={};return!0};
Regards,
Kumararaja K
Thanks kumararajak but you just copy/paste code from plugin installation page, we've already implemented the same code.
Views
Replies
Total Likes
Dear Cathy,
This below part was missing in the question you posted.
/*
* Plugin: getPreviousValue_v1.0 - return previous value of designated
* variable (requires split utility)
*/
s.getPreviousValue=new Function("v","c","el",""
+"var s=this,t=new Date,i,j,r='';t.setTime(t.getTime()+1800000);if(el"
+"){if(s.events){i=s.split(el,',');j=s.split(s.events,',');for(x in i"
+"){for(y in j){if(i[x]==j[y]){if(s.c_r(c)) r=s.c_r(c);v?s.c_w(c,v,t)"
+":s.c_w(c,'no value',t);return r}}}}}else{if(s.c_r(c)) r=s.c_r(c);v?"
+"s.c_w(c,v,t):s.c_w(c,'no value',t);return r}");
/*
* Utility Function: split v1.5 - split a string (JS 1.0 compatible)
*/
s.split=new Function("l","d",""
+"var i,x=0,a=new Array;while(l){i=l.indexOf(d);i=i>-1?i:l.length;a[x"
+"++]=l.substring(0,i);l=l.substring(i+d.length);}return a");
So, i thought adding it might solve.
Regards,
Kumararaja K
Views
Replies
Total Likes
The problem only in the pageview tag that doesn't fire on hard refresh.
Views
Replies
Total Likes
Cathy,
Plug-in code is correct only.
When you hard refresh your website it sets previous page value as null, because hard refresh erases the cookies.
You need to correct your initialization code not plug-in code.
Regards
Ashok
Views
Replies
Total Likes
Thanks for answer. The initialization is the following:
if(s.pageName)
s.getPercentPageViewed();
if(s._ppvPreviousPage)
s.eVar10 = s._ppvHighestPercentViewed;
As you can see, we check previous value.
Views
Replies
Total Likes
Hi Cathy,
Try this below code to enable getpercentviewed function. I have validated both s.pagename and s._ppvPreviouspage in first condition.
if(s.pageName && s._ppvPreviousPage)
s.getPercentPageViewed();
if(s._ppvPreviousPage)
s.eVar10 = s._ppvHighestPercentViewed;
Regards
Ashok
Views
Replies
Total Likes
Thanks, but it wouldn't work because s._ppvPreviousPage defines after s.getPercentPageViewed() function call.
The plugin read value s_ppv from a cookie, which isn't define in a first call. I think the problem is in this definition in plugin code.
Views
Replies
Total Likes
You are correct. need to correct the plug-in code.
i will look into the plug-in code
Regards
Ashok
Views
Replies
Total Likes
Hi Cathy,
Use the below code to avoid error.
Try
{
if(s.pageName)
s.getPercentPageViewed();
if(s._ppvPreviousPage)
s.eVar10 = s._ppvHighestPercentViewed;
}
Catch(error)
{
}
Hope this will work for you.
Regards
Ashok
Views
Replies
Total Likes
Now pageview tag doesn't fire at all.
Views
Replies
Total Likes
If you hard refresh it won't work becuase previous page value is null. when you normally browse website it should capture. if it is not captured in normal browsing we need to capture PercentPageViewed in s.tl() call before leaving page.
Views
Replies
Total Likes
Fixed.
Views
Replies
Total Likes
Hi Cathy,
Could you share the solution detail. It helps us in future.
Regards
Ashok
Views
Replies
Total Likes
Views
Likes
Replies
Views
Likes
Replies
Views
Likes
Replies
Views
Likes
Replies
Views
Likes
Replies