Skip to content

Instantly share code, notes, and snippets.

@simondahla
Last active October 18, 2018 13:30
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save simondahla/97f810b8cd6e555e11487ebe1f6023cc to your computer and use it in GitHub Desktop.
Save simondahla/97f810b8cd6e555e11487ebe1f6023cc to your computer and use it in GitHub Desktop.
Device Orientation Detection for Google Analytics. Modded version for Google Tag Manager (GTM). Originally from https://www.themarketingtechnologist.co/using-html5s-device-orientation-to-track-device-behaviour/
/**
* isMobile.js v0.4.0
*
* A simple library to detect Apple phones and tablets,
* Android phones and tablets, other mobile devices (like blackberry, mini-opera and windows phone),
* and any kind of seven inch device, via user agent sniffing.
*
* @author: Kai Mallea (kmallea@gmail.com)
*
* @license: http://creativecommons.org/publicdomain/zero/1.0/
*/
!function(a){var b=/iPhone/i,c=/iPod/i,d=/iPad/i,e=/(?=.*\bAndroid\b)(?=.*\bMobile\b)/i,f=/Android/i,g=/(?=.*\bAndroid\b)(?=.*\bSD4930UR\b)/i,h=/(?=.*\bAndroid\b)(?=.*\b(?:KFOT|KFTT|KFJWI|KFJWA|KFSOWI|KFTHWI|KFTHWA|KFAPWI|KFAPWA|KFARWI|KFASWI|KFSAWI|KFSAWA)\b)/i,i=/IEMobile/i,j=/(?=.*\bWindows\b)(?=.*\bARM\b)/i,k=/BlackBerry/i,l=/BB10/i,m=/Opera Mini/i,n=/(CriOS|Chrome)(?=.*\bMobile\b)/i,o=/(?=.*\bFirefox\b)(?=.*\bMobile\b)/i,p=new RegExp("(?:Nexus 7|BNTV250|Kindle Fire|Silk|GT-P1000)","i"),q=function(a,b){return a.test(b)},r=function(a){var r=a||navigator.userAgent,s=r.split("[FBAN");return"undefined"!=typeof s[1]&&(r=s[0]),s=r.split("Twitter"),"undefined"!=typeof s[1]&&(r=s[0]),this.apple={phone:q(b,r),ipod:q(c,r),tablet:!q(b,r)&&q(d,r),device:q(b,r)||q(c,r)||q(d,r)},this.amazon={phone:q(g,r),tablet:!q(g,r)&&q(h,r),device:q(g,r)||q(h,r)},this.android={phone:q(g,r)||q(e,r),tablet:!q(g,r)&&!q(e,r)&&(q(h,r)||q(f,r)),device:q(g,r)||q(h,r)||q(e,r)||q(f,r)},this.windows={phone:q(i,r),tablet:q(j,r),device:q(i,r)||q(j,r)},this.other={blackberry:q(k,r),blackberry10:q(l,r),opera:q(m,r),firefox:q(o,r),chrome:q(n,r),device:q(k,r)||q(l,r)||q(m,r)||q(o,r)||q(n,r)},this.seven_inch=q(p,r),this.any=this.apple.device||this.android.device||this.windows.device||this.other.device||this.seven_inch,this.phone=this.apple.phone||this.android.phone||this.windows.phone,this.tablet=this.apple.tablet||this.android.tablet||this.windows.tablet,"undefined"==typeof window?this:void 0},s=function(){var a=new r;return a.Class=r,a};"undefined"!=typeof module&&module.exports&&"undefined"==typeof window?module.exports=r:"undefined"!=typeof module&&module.exports&&"undefined"!=typeof window?module.exports=s():"function"==typeof define&&define.amd?define("isMobile",[],a.isMobile=s()):a.isMobile=s()}(this);
(function() {
window.dataLayer = window.dataLayer || [];
if (isMobile.any()) {
switch (window.orientation) {
case -90:
case 90:
dataLayer.push({'event': 'event', 'eventCategory': 'Device Orientation', 'eventAction': 'Landing', 'eventLabel': 'Landscape', 'eventNonInteraction': true });
break;
default:
dataLayer.push({'event': 'event', 'orientationEvent': 'Device Orientation', 'eventAction': 'Landing', 'eventLabel': 'Portrait', 'eventNonInteraction': true });
break;
};
window.addEventListener('orientationchange', function() {
switch (window.orientation) {
case -90:
case 90:
dataLayer.push({'event': 'event', 'eventCategory': 'Device Orientation', 'eventAction': 'Change', 'eventLabel': 'Landscape', 'eventNonInteraction': true });
break;
default:
dataLayer.push({'event': 'event', 'eventCategory': 'Device Orientation', 'eventAction': 'Change', 'eventLabel': 'Portrait', 'eventNonInteraction': true });
break;
}
}, false);
};
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment