Last active
October 18, 2018 13:30
-
-
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/
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* 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 ([email protected]) | |
* | |
* @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