Skip to content

Instantly share code, notes, and snippets.

@zakness
Last active September 11, 2017 20:51
Show Gist options
  • Save zakness/bb4d726abb2dab1ecf000c5d896fb311 to your computer and use it in GitHub Desktop.
Save zakness/bb4d726abb2dab1ecf000c5d896fb311 to your computer and use it in GitHub Desktop.
birchbox.co.uk + TokyWoky

Triggered on every page view:

Since the DOM does not refresh between page views, we need to delete everything Toky does not expect to be there.

var tokyContainer;
var tokyScript;
while (tokyContainer = document.getElementById('toky')) {
  tokyContainer.remove();
}
while (tokyScript = document.getElementById('toky-script')) {
  tokyScript.remove();
}

if (toky && toky.eventListener) {
  window.removeEventListener && window.removeEventListener('message', toky.eventListener);
  window.detachEvent && window.detachEvent('onmessage', toky.eventListener);
}

delete window.toky_id;
delete window.toky_container;
delete window.toky;
delete window.badBrowser;
delete window.xmlhttp;
delete window.tokyLoaded;
delete window.tokyOrderLoaded;
delete window.toky_order;
delete window.tokyOrder;
delete window.tokyUgc;

Triggered on pages for which we’ve activated TokyWoky:

It is assumed that the cleanup code above is always run right before this code runs.

window.toky_id = XXX;
window.toky_container = document.getElementById('toky');
if (!window.toky_container) {
  window.toky_container = document.createElement('div');
  window.toky_container.id = 'toky';
  document.getElementsByTagName('body')[0].appendChild(window.toky_container);
}

(function () {
  var toky;
  while (toky = document.getElementById('toky-script')) {
    toky.remove();
  }
  toky = document.createElement('script');
  toky.id = 'toky-script';
  toky.type = 'text/javascript';
  toky.async = true;
  toky.src = '//az601263.vo.msecnd.net/webview/' + window.toky_id + '/embed.js';
  document.getElementsByTagName('head')[0].appendChild(toky);
})();

Triggered when an order is placed:

window.toky_id = XXX;

window.toky_order = {
  num: (b.orderId || '').toString(),
  value: b.orderEcommerceAmount
};

window.toky_container = document.getElementById('toky');
if (!window.toky_container) {
  window.toky_container = document.createElement('div');
  window.toky_container.id = 'toky';
  document.getElementsByTagName('body')[0].appendChild(window.toky_container);
}

(function () {
  var toky;
  while (toky = document.getElementById('toky-script')) {
    toky.remove();
  }
  toky = document.createElement('script');
  toky.id = 'toky-script';
  toky.type = 'text/javascript';
  toky.async = true;
  toky.src = '//az601263.vo.msecnd.net/webview/' + window.toky_id + '/embed.js';
  document.getElementsByTagName('head')[0].appendChild(toky);
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment