How to Detect Mobile Devices using jQuery

Share this article

You can use this minified jQuery snippet to detect if your user is viewing using a mobile device. If you need to test for a specific device I’ve included a collection of JavaScript snippets below which can be used to detect various mobile handheld devices such as iPad, iPhone, iPod, iDevice, Andriod, Blackberry, WebOs and Windows Phone.

/**
 * jQuery.browser.mobile (http://detectmobilebrowser.com/)
 * jQuery.browser.mobile will be true if the browser is a mobile device
 **/
(function(a){jQuery.browser.mobile=/android.+mobile|avantgo|bada/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)/|plucker|pocket|psp|symbian|treo|up.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|/(k|l|u)|50|54|e-|e/|-[a-w])|libw|lynx|m1-w|m3ga|m50/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(di|rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|xda(-|2|g)|yas-|your|zeto|zte-/i.test(a.substr(0,4))})(navigator.userAgent||navigator.vendor||window.opera);
Example Usage:
if(jQuery.browser.mobile)
{
   console.log('You are using a mobile device!');
}
else
{
   console.log('You are not using a mobile device!');
}

Detect iPad

var isiPad = /ipad/i.test(navigator.userAgent.toLowerCase());
if (isiPad)
{
  ...
}

Detect iPhone

var isiPhone = /iphone/i.test(navigator.userAgent.toLowerCase());
if (isiPhone)
{
  ...
}

Detect iPod

var isiPod = /ipod/i.test(navigator.userAgent.toLowerCase());
if (isiPod)
{
  ...
}

Detect iDevice

var isiDevice = /ipad|iphone|ipod/i.test(navigator.userAgent.toLowerCase());

if (isiDevice)
{
  ...
}

Detect Andriod

var isAndroid = /android/i.test(navigator.userAgent.toLowerCase());

if (isAndroid)
{
  ...
}

Detect Blackberry

var isBlackBerry = /blackberry/i.test(navigator.userAgent.toLowerCase());

if (isBlackBerry)
{
  ...
}

Detect WebOs

var isWebOS = /webos/i.test(navigator.userAgent.toLowerCase());

if (isWebOS)
{
  ...
}

Detect Windows Phone

var isWindowsPhone = /windows phone/i.test(navigator.userAgent.toLowerCase());

if (isWindowsPhone)
{
  ...
}

Frequently Asked Questions (FAQs) on Detecting Mobile Devices with jQuery

What is the basic method to detect a mobile device using jQuery?

The basic method to detect a mobile device using jQuery involves using the navigator.userAgent property. This property returns the user agent string for the browser, which includes information about the browser version, operating system, and device type. You can use a regular expression to search for keywords that indicate a mobile device, such as “Mobile”, “Android”, “iPhone”, etc. Here’s a simple example:

if (/Mobile|Android|iPhone/i.test(navigator.userAgent)) {
// Code to execute if a mobile device is detected
}
This code will execute the contained block if the user agent string contains any of the specified keywords, indicating a mobile device.

How can I differentiate between different mobile devices using jQuery?

Differentiating between various mobile devices involves using more specific keywords in your regular expression. For instance, if you want to differentiate between an iPhone and an Android device, you could use the following code:

if (/iPhone/i.test(navigator.userAgent)) {
// Code to execute if an iPhone is detected
} else if (/Android/i.test(navigator.userAgent)) {
// Code to execute if an Android device is detected
}
This code will execute different blocks depending on whether the user agent string indicates an iPhone or an Android device.

Can I detect the screen size of a device using jQuery?

Yes, you can detect the screen size of a device using jQuery’s $(window).width() and $(window).height() methods. These methods return the width and height of the browser window, respectively. You can use these values to make assumptions about the device type. For example:

if ($(window).width() < 480) {
// Code to execute if the device screen width is less than 480 pixels
}
This code will execute the contained block if the device screen width is less than 480 pixels, which is typical for mobile devices.

How reliable is user agent detection for identifying mobile devices?

User agent detection can be a useful tool for identifying mobile devices, but it’s not 100% reliable. User agents can be easily spoofed or altered, and there are many different user agent strings in use across various devices and browsers. Therefore, it’s generally a good idea to use user agent detection in conjunction with other methods, such as feature detection or screen size detection, to ensure more accurate results.

Can I use jQuery to detect specific features of a mobile device?

jQuery itself doesn’t provide a built-in method for feature detection, but you can use Modernizr, a JavaScript library that works well with jQuery. Modernizr allows you to test for specific features, such as touch events, which are common on mobile devices. If Modernizr detects a touch event, you can assume the device is a touchscreen device, likely a mobile device.

How can I use jQuery to optimize my website for mobile devices?

Once you’ve detected a mobile device, you can use jQuery to optimize your website for mobile viewing. This could involve resizing elements, changing the layout, loading lower-resolution images, or other modifications designed to improve the mobile browsing experience.

Can I detect the orientation of a mobile device using jQuery?

Yes, you can detect the orientation of a mobile device using the window.orientation property in conjunction with the $(window).resize() event. This can be useful for adjusting your layout based on whether the device is in portrait or landscape mode.

What are some common pitfalls to avoid when detecting mobile devices with jQuery?

One common pitfall is relying solely on user agent detection, which can be unreliable. It’s also important to avoid making assumptions about device capabilities based on screen size alone, as many modern mobile devices have high-resolution screens that can rival those of desktop computers.

Can I use jQuery to detect whether a device supports touch events?

Yes, you can use the 'ontouchstart' in window property to detect whether a device supports touch events. This can be a good indicator that the device is a touchscreen device, likely a mobile device.

How can I test my jQuery mobile device detection code?

You can test your code using various tools and techniques. One common method is to use the device emulation features in your browser’s developer tools. This allows you to simulate different devices and screen sizes. You can also use online tools that simulate various devices, or test your website on actual devices if they are available.

Sam DeeringSam Deering
View Author

Sam Deering has 15+ years of programming and website development experience. He was a website consultant at Console, ABC News, Flight Centre, Sapient Nitro, and the QLD Government and runs a tech blog with over 1 million views per month. Currently, Sam is the Founder of Crypto News, Australia.

jQuery
Share this article
Read Next
Get the freshest news and resources for developers, designers and digital creators in your inbox each week