enketo-core
Version:
Extensible Enketo form engine
55 lines (49 loc) • 1.14 kB
JavaScript
/**
* @module sniffer
* */
const ua = navigator.userAgent;
const pf = navigator.platform;
// We usually don't need to know which OS is running, but want to know
// whether a specific OS is runnning.
/**
* @namespace os
* */
const os = {
/**
* @type {string}
* */
get ios() {
// in iOS13, the default Safari setting is 'Request Desktop Site' to be On.
// The platform and useragent no longer show iPad/iPhone/iPod
// so we use a trick that will work for a while until MacOs gets touchscreen support.
return (
/iPad|iPhone|iPod/i.test(pf) ||
(/Mac/i.test(pf) &&
document.documentElement.ontouchstart !== undefined)
);
},
/**
* @type {string}
* */
get android() {
return /android/i.test(ua);
},
/**
* @type {string}
* */
get macos() {
return /Mac/.test(ua);
},
};
/**
* @namespace browser
* */
const browser = {
/** ua
* @type {string}
* */
get safari() {
return /^((?!chrome|android).)*safari/i.test(ua);
},
};
export { os, browser };