(see the
* 'adobe' handle in functions.php — no async, no defer), so a page-load
* Target offer has already set `data-hdr` by the time this runs.
*
* An answer that lands after this point is inert rather than acted on:
* `apply()` finds the prune settled and does nothing, so the visitor
* keeps the nav they were served instead of watching it change. That is
* the deliberate trade-off — a late activity collects no data, but no
* visitor ever sees the wrong nav or waits for the right one.
*/
(function () {
var VARIANTS = ["a","b","c"];
var DEFAULT = "a";
var root = document.documentElement;
var settled = false;
function valid(v) { return VARIANTS.indexOf(v) !== -1; }
function prune(active) {
if (settled) return;
settled = true;
var list = document.querySelectorAll('#site-header > .header-variant');
for (var i = 0; i < list.length; i++) {
if (list[i].getAttribute('data-header-variant') !== active) {
list[i].parentNode.removeChild(list[i]);
}
}
root.setAttribute('data-hdr', active);
// Read by the Adobe Analytics client to attribute the test.
root.setAttribute('data-hdr-active', active);
if (typeof window.initHeaderNav === 'function') window.initHeaderNav();
/**
* `variant` is set before the event so late listeners can tell
* "already done" from "not yet". main.js is enqueued in the footer
* and therefore always misses the event itself.
*/
window.medalliaNav.variant = active;
document.dispatchEvent(new CustomEvent('medallia:nav-ready', {
detail: { variant: active }
}));
}
window.medalliaNav = {
variant: null,
apply: function (v) { if (valid(v)) prune(v); }
};
// `?hv=` sets this server-side; a Target offer in the blocking
// embed sets it before the body is parsed.
var pre = root.getAttribute('data-hdr');
if (valid(pre)) { prune(pre); return; }
/**
* Carried forward from an earlier pageview. Read client-side, never in
* PHP: WP Engine does not vary its page-cache key on arbitrary cookies,
* so server-side personalisation here would serve the first anonymous
* visitor's variant to everyone.
*/
var m = document.cookie.match(/(?:^|; )medallia_nav_variant=([^;]*)/);
if (m && valid(m[1])) { prune(m[1]); return; }
prune(DEFAULT);
})();