Skip to content

Instantly share code, notes, and snippets.

View hitGovernor's full-sized avatar

Brian Johnson (Evo) hitGovernor

View GitHub Profile
@hitGovernor
hitGovernor / getHotJarUserID.js
Last active April 12, 2023 11:17
Retrieves the HotJar user ID from the browser. The ID can be passed to analytics or other systems as a way to connect HotJar recordings to other systems.
(function () {
// gets hotjar user id (hjUID)
var hjUID = "";
try {
if (typeof (hj) != "undefined" && hj.hasOwnProperty("globals")) {
// sample: a21c0a02-3b48-53c6-94b4-5604e281e5d8
// the value before the first "-" ("a21c0a02") is the user identifier that can be referenced in the hj interface
// use the following snippet to return only the user identifier (eg// "a21c0a02"):
// hjUID =hj.globals.get("userId").split("-").shift();
@hitGovernor
hitGovernor / tealium_debugToggle.js
Last active August 21, 2022 12:58
tealium_debugToggle.js
// tiq toggle debug
(document.cookie.indexOf("utagdb=true") > -1) ? document.cookie = "utagdb=false" : document.cookie = "utagdb=true";
// bookmarklet: javascript:(function()%7B(document.cookie.indexOf("utagdb%3Dtrue")>-1)%3Fdocument.cookie%3D"utagdb%3Dfalse":document.cookie%3D"utagdb%3Dtrue"%3B%7D)()%3B
@hitGovernor
hitGovernor / tealium_assetScraper.js
Last active March 26, 2021 21:29
Scrapes the Tealium IQ (TiQ) web interface to retrieve all Data Layer variables, Load Rules, Tags, and Extensions. Output is written to the browser console either using console.table() or as a comma-delimited string, suitable for copy/paste use. To use, you must be logged into TiQ, viewing the Data Layer tab. Feedback is appreciated.
// if the element exists, returns the innerText, otherwise an empty string
function getInnerText(ele) {
if (ele) {
return ele.innerText;
}
return "";
}
// executes the query selectors and builds the output
s.registerPreTrackCallback(function(requestUrl, allowList, hostname) {
var doTrack = (allowList.indexOf(hostname) > -1);
console.log(allowList, hostname, doTrack);
}, ['sandbox.test.com'], document.location.hostname);
@hitGovernor
hitGovernor / launchCookieStorageDataElement.js
Created December 3, 2020 20:02
building a data element to store info in a cookie on the root domain
/**
* Steps:
* 1. Create a data element to retrieve the query parameter; set storage to "none"
* 2. Create a second data element that sets the cookie on your domain's root
* 3. Reference the second data element on load of every page (it won't fire if it's not referenced)
* 4. When you need the info in the cookie, pull it from the data element created in step 2
*/
// check for the query param first (this always overrides a saved value)
var retval = _satellite.getVar("qsp:ex_id");
@hitGovernor
hitGovernor / aep_scrolldemo.js
Created December 2, 2020 00:12
basic js scroll tracker with added scrollTimer for aep conversation
var govScroll = {
measurements: {
initial: {},
current: {},
max: {},
},
config: {
hasMilestoneOccurred: {
25: false, // false indicates it has not fired, but should; true indicates it already has (or shouldn't)
50: false,
// default the flag to false (it gets set to true in registerPostTrackCallback)
var flag = false;
// wait for flag=true (set in registerPostTrackCallback) to fire the s.tl() call
var waitForFlag = setInterval(function() {
if(flag) {
console.log("fire s.tl() here");
clearInterval(waitForFlag);
}
}, 50);
@hitGovernor
hitGovernor / getParams.js
Last active August 20, 2020 14:18
turns query params into key:value pairs
/**
* returns an object with all query parameters as key/value pairs
* @param payload - if ommitted, returns all params as an object; if passed as string specifying a parameter,
* returns the value of the specified parameter name; can be passed as object { search: document.location.search, returnKey: {{parameter-name}} }
* @returns {object} - example: http://example.com?a=a-value&B=B-VALUE = > { "a": "a-value", "b": "B-VALUE"}
*/
function getParams(payload) {
var searchString = document.location.search,
returnKey = "";
@hitGovernor
hitGovernor / regexEscapes.js
Created August 12, 2020 19:09
regexEscapes.js
var x = {
regexEscapes: function (str) {
str = str.replace(/\//g, "\\/");
str = str.replace(/\?/g, "\\?");
return str;
}
}
var val = x.regexEscapes("/test/this/here?for=now");
@hitGovernor
hitGovernor / wistia_milestone_tracking.js
Created July 27, 2020 15:53
Leverages Wistia JS API to monitor specified video milestones
window.videos = {};
wistiaEmbeds.forEach(function (vid) {
window.videos[vid.hashedId()] = {
id: vid.hashedId(),
name: vid.name(),
duration: vid.duration(),
status: {
step_play: false,
step_25: false,
step_50: false,