Detect iPad Mini in HTML5
Apple's iPad Mini is a smaller clone of the iPad 2 in more ways than we'd want. In JavaScript, the window.navigator
object exposes the same values for the Mini and iPad 2. My tests so far to detect the difference have not lead to success.
Why is this important?
As the iPad Mini and iPad 2 screens are identical in pixels but vary in actual size (inches / centimeters), they vary in PPI (pixels per inch).
For web applications and games to offer a friendly user interface, certain elements are adjusted in size relative to a user's thumb or finger position, thus, we may want to scale certain images or buttons to provide for that better user experience.
Things I have tried so far (including some pretty obvious approaches):
window.devicepixelratio
resolution
and -webkit-device-pixel-ratio
) requestAnimFrame
(I was hoping to detect a measurable difference) I'm fresh out of ideas. How about you?
Update Thanks for the responses so far. I would like to comment on people voting against detecting iPad mini versus 2 as Apple has uhm, one guideline to rule them all. Okay, here's my reasoning why I feel it really makes all sense in the world to know if a person is using an iPad mini or a 2. And do with my reasoning what you like.
The iPad mini is not only a much smaller device (9.7 inch versus 7.9 inch), but its form factor allows for a different usage. The iPad 2 is usually held with two hands when gaming unless you're Chuck Norris. The mini is smaller, but it is also much lighter and allows for gameplay where you hold it in one hand and use another to swipe or tap or whatnot. As a game designer and developer myself, I'd just like to know if it's a mini so I can choose to provide the player with a different controlscheme if I want (for instance after A/B testing with a group of players).
Why? Well, it's a proven fact that the majority of users tend to go with the default settings, so leaving out a virtual thumbstick and putting some other tap-based control on the screen (just giving an arbitrary example here) when the player loads up the game for the first time is what I, and probably other game designers, would love to be able to do.
So IMHO this goes beyond the thick fingers / guidelines discussions and is just something Apple and all other vendors ought to do: allow us to uniquely identify your device and think different instead of following guidelines.
Play a stereo audio file and compare the accelerometer response when volume is high on the right channel and on the left channel - iPad2 had mono speakers whereas iPad Mini has built-in stereo speakers.
Need your help to gather the data please visit this page and help me collect data for this crazy idea. I don't have an iPad mini so I really need your help
Update: It looks like these values are reporting the viewport width and height at the time of tab creation, and they don't change upon rotation, so this method can't be used for device detection !
You can use the either screen.availWidth
or screen.availHeight
as they seem to be different for iPad Mini and iPad 2.
iPad Mini
screen.availWidth = 768
screen.availHeight = 1004
iPad 2
screen.availWidth = 748
screen.availHeight = 1024
Source: http://konstruktors.com/blog/web-design/4396-detect-ipad-mini-javascript/
I understand this might be a bit low-tech solution, but since we can't seem to come up with anything else yet..
I am assuming you already check for most of the other devices, so I see the following scenarios possible.
You could check for ALL the possible most popular devices that require special CSS/sizing, and if it matches none of those either assume it's an iPad mini or simply ask the user?
// Device checks here
...
else {
// it would probably be better to make this a nicer popup-thing
var mini = prompt("Are you using a iPad mini? Press yes for a better user experience");
// Store the result for future visits somehow.
}
I know that might seem like a stupid approach right now, but if we currently have no way of deciding if the device is a iPad mini or an iPad 2 at least the website will be usable with iPad mini devices doing something like this.
You could even go with something like this:
"To give you the best possible browsing experience we try to detect your device-type to customise the website to your device. Unfortunately due to limitations this is not always possible and we can't currently determine if you use an iPad 2 or an iPad mini by using these methods.
For the best possible browsing experience, please select what device you are using below.
This choice will be stored for future visits to the website on this device.
[] iPad 2
[*] iPad mini
[] Ancient blackberry device
"
I am not entirely familiar with what you can and can't do client-side in Javascript. I know you can get a user's IP, but is it possible to get a user's mac address? Are those ranges different between iPad2's and iPad mini's?
链接地址: http://www.djcxy.com/p/27048.html下一篇: 在HTML5中检测iPad Mini