Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Desktop support? #3

Open
AlexanderMatveev opened this issue Feb 26, 2014 · 11 comments
Open

Desktop support? #3

AlexanderMatveev opened this issue Feb 26, 2014 · 11 comments

Comments

@AlexanderMatveev
Copy link

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

userAgent()
os()

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

@hgoebl
Copy link
Owner

hgoebl commented Feb 26, 2014

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?

@AlexanderMatveev
Copy link
Author

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
Copy link
Author

Maybe, I'm doing something wrong

@hgoebl
Copy link
Owner

hgoebl commented Feb 26, 2014

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

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

@serbanghita
Copy link
Collaborator

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

@AlexanderMatveev
Copy link
Author

@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
Copy link
Author

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

@hgoebl
Copy link
Owner

hgoebl commented Feb 27, 2014

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

@morenoh149
Copy link

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

@ciarans
Copy link

ciarans commented Sep 21, 2017

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

@adzza24
Copy link

adzza24 commented Dec 13, 2021

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!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants