1
0
mirror of https://github.com/lancedikson/bowser synced 2024-10-27 20:34:22 +00:00
lancedikson_bowser/README.md

114 lines
3.2 KiB
Markdown
Raw Normal View History

2011-04-27 22:14:35 +00:00
Bowser
------
2011-04-27 23:25:55 +00:00
A Browser detector. Because sometimes, there is no other way, and not even good modern browsers always provide good feature detection mechanisms.
2011-04-27 22:14:35 +00:00
2014-02-22 21:34:00 +00:00
[![bowser ci](https://secure.travis-ci.org/ded/bowser.png)](https://travis-ci.org/ded/bowser/)
2011-04-27 23:25:55 +00:00
So... it works like this:
2011-04-27 22:14:35 +00:00
``` js
if (bowser.msie && bowser.version <= 6) {
alert('Hello China');
}
```
2011-04-27 22:14:35 +00:00
Flags set for detected Browsers[Engines]
2011-04-27 22:14:35 +00:00
-----
* `chrome`[`webkit`]
* `firefox`[`gecko`]
* `msie`
* Android native browser as `android`[`webkit`]
* iOS native browser as `ios`[`webkit`]
* `opera`[`webkit` if >12]
* `phantomjs`[`webkit`]
* `safari`[`webkit`]
* `seamonkey`[`gecko`]
* BlackBerry native browser as `blackberry`[`webkit`]
* WebOS native browser as `webos`[`webkit`]
2014-02-24 00:19:41 +00:00
* Amazon Kindle browser as `silk`[`webkit`]
* Bada browser as `bada`[`webkit`]
* Tizen browser as `tizen`[`webkit`]
* Sailfish browser as `sailfish`[`gecko`]
For all detected browsers the browser version is set in the `version` field.
Flags set for detected mobile Operating Systems
2014-02-21 14:09:58 +00:00
-----
* `android`
* Windows Phone as `windowsphone`
* `ios` (`iphone`/`ipad`/`ipod`)
* `blackberry`
* `firefoxos`
2014-02-24 22:07:20 +00:00
* `webos` (`touchpad`)
* `bada`
* `tizen`
* `sailfish`
2014-02-21 14:09:58 +00:00
Android, iOS, Windows Phone, WebOS, Bada, and Tizen will all report the OS version number if it is contained in the UA string in the `osversion` field. iOS is always reported as `ios` and additionally as `iphone`/`ipad`/`ipod`, whichever one matches best. If WebOS device is an HP TouchPad the flag `touchpad` is additionally set.
2014-02-21 14:09:58 +00:00
All detected mobile OSes are additionally flagged `mobile`, **if they are not powering a tablet device**. If a tablet device is detected, the flag `tablet` is set instead.
2011-04-27 22:14:35 +00:00
Notes
----
2014-02-21 14:09:58 +00:00
Safari, Chrome and some other minor browsers will report that they have `webkit` engines, Firefox and Seamonkey will report that they have `gecko` engines.
2011-04-27 22:14:35 +00:00
``` js
if (bowser.webkit) {
2014-02-24 00:22:07 +00:00
// do stuff with safari & chrome & opera & android & blackberry & webos & silk
}
```
2011-04-27 22:14:35 +00:00
Ender installation
-----
If you don't already have [Ender](http://ender.no.de) (an npm package) install it now (and don't look back)
$ npm install ender
then add bowser to your module collection
$ ender add bowser
use it like this:
``` js
if ($.browser.chrome) {
alert('Hello Silicon Valley');
}
```
Graded Browser Support
---------
One useful feature of Bowser is that aside from checking one browser from another -- it will keep up to date with [Yahoo's Graded Browser Support](http://developer.yahoo.com/yui/articles/gbs/) chart, giving you access to each grade on the bowser object
``` js
if (bowser.a) {
// support full feature set
}
else if (bowser.c) {
// serve degraded version
}
else {
// unsupported (bowser.x)
2013-12-13 12:17:10 +00:00
}
```
Building
--------
2014-01-26 22:43:17 +00:00
If you'd like to contribute a change to bowser, modify the files in src/, then run the following (you'll need node + npm installed):
$ npm install
$ make
2013-12-13 12:17:10 +00:00
Testing
-------
We started a list `src/useragents.js` with example user agents and their expected bowser object.
Whenever you add support for new browsers or notice a bug / mismatch, please update the list and
check if all tests are still passing.
To run the test call `$ make test`