1
0
mirror of https://github.com/beestat/app.git synced 2025-06-03 13:46:54 -04:00
beestat/js/beestat/touch.js
2021-12-16 07:49:51 -05:00

38 lines
1.1 KiB
JavaScript

/**
* Detect if the device is touch enabled.
*
* @link https://developer.mozilla.org/en-US/docs/Web/HTTP/Browser_detection_using_the_user_agent
* @return {boolean} Whether or not the device is touch enabled.
*/
beestat.touch = function() {
if (beestat.touch_ !== undefined) {
return beestat.touch_;
}
let touch = false;
if ('maxTouchPoints' in navigator) {
touch = navigator.maxTouchPoints > 0;
} else if ('msMaxTouchPoints' in navigator) {
touch = navigator.msMaxTouchPoints > 0;
} else {
var mq = window.matchMedia && matchMedia('(pointer:coarse)');
if (mq && mq.media === '(pointer:coarse)') {
touch = Boolean(mq.matches);
} else if ('orientation' in window) {
// Deprecated, but good fallback
touch = true;
} else {
// Only as a last resort, fall back to user agent sniffing
var UA = navigator.userAgent;
touch = (
(/\b(BlackBerry|webOS|iPhone|IEMobile)\b/i).test(UA) ||
(/\b(Android|Windows Phone|iPad|iPod)\b/i).test(UA)
);
}
}
// Cache result
beestat.touch_ = touch;
return beestat.touch_;
};