Skip to content

Instantly share code, notes, and snippets.


Brian Johnson (Evo) hitGovernor

View GitHub Profile
hitGovernor / getHotJarUserID.js
Last active Jan 9, 2023
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.
View getHotJarUserID.js
(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 / tealium_debugToggle.js
Last active Aug 21, 2022
View 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 / tealium_assetScraper.js
Last active Mar 26, 2021
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.
View tealium_assetScraper.js
// 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
View Untitled-2
s.registerPreTrackCallback(function(requestUrl, allowList, hostname) {
var doTrack = (allowList.indexOf(hostname) > -1);
console.log(allowList, hostname, doTrack);
}, [''], document.location.hostname);
hitGovernor / launchCookieStorageDataElement.js
Created Dec 3, 2020
building a data element to store info in a cookie on the root domain
View launchCookieStorageDataElement.js
* 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 / aep_scrolldemo.js
Created Dec 2, 2020
basic js scroll tracker with added scrollTimer for aep conversation
View aep_scrolldemo.js
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,
View aelc_20200930.js
// 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 call
var waitForFlag = setInterval(function() {
if(flag) {
console.log("fire here");
}, 50);
hitGovernor / getParams.js
Last active Aug 20, 2020
turns query params into key:value pairs
View getParams.js
* 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:, returnKey: {{parameter-name}} }
* @returns {object} - example: = > { "a": "a-value", "b": "B-VALUE"}
function getParams(payload) {
var searchString =,
returnKey = "";
View 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 / wistia_milestone_tracking.js
Created Jul 27, 2020
Leverages Wistia JS API to monitor specified video milestones
View wistia_milestone_tracking.js
window.videos = {};
wistiaEmbeds.forEach(function (vid) {
window.videos[vid.hashedId()] = {
id: vid.hashedId(),
duration: vid.duration(),
status: {
step_play: false,
step_25: false,
step_50: false,