mobile-detect.js
mobile-detect.js copied to clipboard
Desktop support?
Why when using with desktop, these functions give blank result:
userAgent() os()
And is this possible to do something like md.is('Desktop')?
Can you tell me the value for window.navigator.userAgent
please? (You can use the JavaScript console to get the value.) On which browser and operating system have you encountered the problem?
With Node.js, here are the tests:
Windows 7 a) Chrome: "Chrome: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.117 Safari/537.36" b) Firefox "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0" c) Yandex Browser: "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.13014 YaBrowser/13.12.1599.13014 Safari/537.36" d) IE: "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)"
Mac a) Chrome: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.102 Safari/537.36" b) Safari: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9) AppleWebKit/537.71 (KHTML, like Gecko) Version/7.0 Safari/537.71"
Maybe, I'm doing something wrong
Can you double-check whether you call the constructor of MobileDetect "class" with the userAgent as argument?
var md = new MobileDetect(window.navigator.userAgent);
@alexmatveev to check for a desktop device you have to first check if it's mobile, hence isDesktop is not available.
@hgoebl
in route:
var MobileDetect = require('mobile-detect');
res.locals.md = new MobileDetect(req.headers['user-agent']);
in view (jade):
=md.userAgent()
=md.os()
@serbanghita But there are more options: TV, DesktopMode, Watch, etc. So I must to check all of them and if they all are FALSE, mean that it's a desktop?
@alexmatveev you haven't done anything wrong. The problem you're encountering is, that MobileDetect has a strong focus on mobile devices and leaves desktop a bit in the dark.
This means that md.userAgent()
and md.os()
only return detected mobile userAgents and OSs.
You can see some "extensions" if you have a look at mobile-usage.
Extending mobile-detect.js to classify desktop browsers and operating system would not be a bad idea. But at the moment I don't have a good idea how to keep backward compatibility.
Any suggestion?
bumping this. I started off using mobile detect for a responsive web app but now I need to have custom functionality on desktop
Not sure if this help's but this how I have adapted the functionality to detect Desktop, Phone, Tablet and Mobile (Phone and Tablet)
isMatchingDeviceType(device) {
if (typeof device === 'undefined') {
return true;
}
if (['ALL', 'MOBILE', 'PHONE', 'DESKTOP', 'TABLET'].indexOf(device) == -1 || device === "ALL") {
return true;
}
var md = new MobileDetect(this.userAgent);
var isMobile = md.mobile() !== null, isPhone = md.phone() !== null, isTablet = md.tablet() !== null;
if (device === "DESKTOP" && !isMobile) {
return true;
}
if (device === "MOBILE" && isMobile) {
return true;
}
if (device === "TABLET" && isTablet) {
return true;
}
if (device === "PHONE" && isPhone) {
return true;
}
return false;
}
Extending mobile-detect.js to classify desktop browsers and operating system would not be a bad idea. But at the moment I don't have a good idea how to keep backward compatibility.
Any suggestion?
I would suggest a separate library (device-detect.js
?) which incorporates these desktop enhancements :) Love this library and would very much love to see this enhancement come to fruition!