Last active
September 7, 2017 05:30
-
-
Save jchild3rs/4d636e4d6e8242f7543f to your computer and use it in GitHub Desktop.
Simple abstraction for working with Omniture
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var O = (function() { | |
var account = s_account || '', // <== fill this in with default s_account | |
instance = s || s_gi(account); | |
/** | |
* Description | |
* @method init | |
* @return | |
*/ | |
function init() { | |
// if you need to do anything on init, add it here. | |
} | |
/** | |
* Clears the tracking vars to prevent double tracking on instances when the page doesn't reload | |
*/ | |
function clearVars() { | |
for (var i=0; i < 75; i++) { | |
s['prop'+i]=''; | |
s['eVar'+i]=''; | |
if(i<=5) | |
s['hier'+i]=''; | |
} | |
var svarArr = ['pageName','channel','products','events','campaign','purchaseID','state','zip','server','linkName']; | |
for (var i=0; i < svarArr.length ; i++) { | |
s[svarArr[i]]=''; | |
} | |
} | |
/** | |
* Sets values to local instance of `s`. | |
* @method set | |
* @param {String} key | |
* @param {String} [val] | |
* @return | |
*/ | |
function set(key, val) { | |
if (typeof key === 'object' && typeof val === 'undefined') { | |
val = key; | |
for (var prop in val) { | |
if (val.hasOwnProperty(prop)) { | |
set(prop, val[prop]); | |
} | |
} | |
} else { | |
instance[key] = val; | |
} | |
} | |
/** | |
* Retrieves values stored on local instance of `s`. | |
* @method get | |
* @param {String} key | |
* @return MemberExpression | |
*/ | |
function get(key) { | |
return instance[key]; | |
} | |
/** | |
* Trigger for s.t(); | |
* @method trackPageLoad | |
* @return | |
*/ | |
function trackPageLoad() { | |
console.groupCollapsed('[Omniture] page loaded'); | |
console.log('s object: ', s); | |
console.groupEnd(); | |
instance.t(); | |
} | |
/** | |
* Trigger for s.tl(); | |
* @method trackClick | |
* @param el | |
* @param event | |
* @return | |
*/ | |
function trackClick(el, event, callback) { | |
console.groupCollapsed('[Omniture] click tracked'); | |
if (typeof el === 'string') { | |
el = $('[href="' + el + '"]').get(0); | |
} | |
set('referrer', window.location.href); | |
if (!!callback) { | |
instance.tl(el, 'o', event, null, callback); | |
} else { | |
instance.tl(el, 'o', event); | |
} | |
console.log('Element: ', el); | |
console.log('Event/LinkName: ', event); | |
console.log('External link: ', utils.isExternalLink($(el).attr('href'))); | |
console.log('s_objectID: ', data('s_objectID')); | |
console.log(s); | |
console.groupEnd(); | |
} | |
/** | |
* Overrides local instance with new a `s` variable. | |
* @method clearProps | |
* @return | |
*/ | |
function clearProps() { | |
instance = s_gi(account); | |
} | |
return { | |
init: init, | |
s: instance, | |
set: set, | |
get: get, | |
trackPageLoad: trackPageLoad, | |
trackClick: trackClick, | |
clearProps: clearProps, | |
clearVars: clearVars | |
}; | |
})(); | |
// Usages | |
// Init | |
O.init(); | |
// Set values | |
O.set('event', 'event5'); // single value | |
O.set({ // multi value | |
'prop1': 'foo', | |
'prop2': 'bar' | |
}); | |
// Get values | |
var prop2 = O.get('prop2'); | |
// Click tracking | |
$('a.foo').click(function(e) { | |
omniture.set({ | |
eVar1: 'Expert Blogs', | |
eVar3: location.pathname, | |
linkTrackVars: 'events,eVar1,eVar2,eVar3,eVar8,eVar17,eVar18,eVar31,eVar32,eVar34,eVar39,eVar56,eVar60,eVar62,eVar63,eVar68,channel', | |
events: 'event3', | |
linkTrackEvents: 'event3' | |
}); | |
omniture.trackClick(e.currentTarget, 'event3'); | |
}); | |
// Track page loaad | |
O.trackPageLoad(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment