mobile-detect.js icon indicating copy to clipboard operation
mobile-detect.js copied to clipboard

Desktop support?

Open AlexanderMatveev opened this issue 10 years ago • 11 comments

Why when using with desktop, these functions give blank result:

userAgent() os()

And is this possible to do something like md.is('Desktop')?

AlexanderMatveev avatar Feb 26 '14 09:02 AlexanderMatveev

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?

hgoebl avatar Feb 26 '14 10:02 hgoebl

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"

AlexanderMatveev avatar Feb 26 '14 12:02 AlexanderMatveev

Maybe, I'm doing something wrong

AlexanderMatveev avatar Feb 26 '14 12:02 AlexanderMatveev

Can you double-check whether you call the constructor of MobileDetect "class" with the userAgent as argument?

var md = new MobileDetect(window.navigator.userAgent);

hgoebl avatar Feb 26 '14 17:02 hgoebl

@alexmatveev to check for a desktop device you have to first check if it's mobile, hence isDesktop is not available.

serbanghita avatar Feb 26 '14 19:02 serbanghita

@hgoebl

in route:

var MobileDetect = require('mobile-detect');
res.locals.md = new MobileDetect(req.headers['user-agent']);

in view (jade):

=md.userAgent()
=md.os()

AlexanderMatveev avatar Feb 27 '14 07:02 AlexanderMatveev

@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?

AlexanderMatveev avatar Feb 27 '14 07:02 AlexanderMatveev

@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?

hgoebl avatar Feb 27 '14 08:02 hgoebl

bumping this. I started off using mobile detect for a responsive web app but now I need to have custom functionality on desktop

morenoh149 avatar Feb 23 '16 20:02 morenoh149

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;
    }

ciarans avatar Sep 21 '17 10:09 ciarans

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!

adzza24 avatar Dec 13 '21 17:12 adzza24