You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
lancedikson_bowser/README.md

154 lines
4.6 KiB

## Bowser
A Browser detector. Because sometimes, there is no other way, and not even good modern browsers always provide good feature detection mechanisms.
13 years ago
10 years ago
[![bowser ci](https://secure.travis-ci.org/ded/bowser.png)](https://travis-ci.org/ded/bowser/)
So... it works like this:
13 years ago
``` js
if (bowser.msie && bowser.version <= 6) {
alert('Hello China');
}
```
13 years ago
## 1.1.0 breaking changes
We don't save built script in the repo anymore. The main file (`src/bowser.js`) is available through NPM or Bower.
Also you can download minified file from [the release page](https://github.com/ded/bowser/releases).
## 1.0.0 breaking changes
`browser = require('bowser').browser;` becomes `browser = require('bowser');`
9 years ago
## Bowser Flags
Your mileage may vary, but these flags should be set. See Contributing below.
13 years ago
9 years ago
``` js
alert('Hello ' + bowser.name + ' ' + bowser.version);
```
### All detected browsers
These flags are set for all detected browsers:
* `name` - A human readable name for this browser. E.g. 'Chrome', ''
* `version` - Version number for the browser. E.g. '32.0'
9 years ago
For unknown browsers, Bowser makes a best guess from the UA string. So, these may not be set.
9 years ago
### Rendering engine flags
9 years ago
If detected, one of these flags may be set to true:
* `webkit` - Chrome 0-27, Android <4.4, iOs, BB, etc.
* `blink` - Chrome >=28, Android >=4.4, Opera, etc.
9 years ago
* `gecko` - Firefox, etc.
* `msie` - IE <= 11
* `msedge` - IE > 11
Safari, Chrome and some other minor browsers will report that they have `webkit` engines.
Firefox and Seamonkey will report that they have `gecko` engines.
``` js
if (bowser.webkit) {
// do stuff with safari & chrome & opera & android & blackberry & webos & silk
}
```
### Device flags
If detected, one of these flags may be set to true:
* `mobile` - All detected mobile OSes are additionally flagged `mobile`, **unless it's a tablet**
9 years ago
* `tablet` - If a tablet device is detected, the flag `tablet` is **set instead of `mobile`**.
9 years ago
9 years ago
### Browser flags
If detected, one of these flags may be set to true. The rendering engine flag is shown in []'s:
9 years ago
* `chrome` - [`webkit`|`blink`]
9 years ago
* `firefox` - [`gecko`]
* `msie`
* `msedge`
9 years ago
* `safari` - [`webkit`]
* `android` - native browser - [`webkit`|`blink`]
9 years ago
* `ios` - native browser - [`webkit`]
* `opera` - [`blink` if >=15]
9 years ago
* `phantom` - [`webkit`]
9 years ago
* `blackberry` - native browser - [`webkit`]
* `webos` - native browser - [`webkit`]
* `silk` - Amazon Kindle browser - [`webkit`]
9 years ago
* `bada` - [`webkit`]
* `tizen` - [`webkit`]
* `seamonkey` - [`gecko`]
* `sailfish` - [`gecko`]
* `ucbrowser` — [`webkit`]
* `qupzilla` — [`webkit`]
* `vivaldi` — [`blink`]
* `sleipnir` — [`blink`]
* `kMeleon` — [`gecko`]
For all detected browsers the browser version is set in the `version` field.
9 years ago
### OS Flags
If detected, one of these flags may be set to true:
10 years ago
* `mac`
9 years ago
* `windows` - other than Windows Phone
* `windowsphone`
* `linux` - other than `android`, `chromeos`, `webos`, `tizen`, and `sailfish`
* `chromeos`
* `android`
9 years ago
* `ios` - also sets one of `iphone`/`ipad`/`ipod`
* `blackberry`
* `firefoxos`
9 years ago
* `webos` - may also set `touchpad`
* `bada`
* `tizen`
* `sailfish`
10 years ago
9 years ago
`osversion` may also be set:
10 years ago
9 years ago
* `osversion` - for Android, iOS, Windows Phone, WebOS, Bada, and Tizen. If included in UA string.
13 years ago
9 years ago
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.
13 years ago
9 years ago
### Browser capability grading
9 years ago
One of these flags may be set:
9 years ago
* `a` - This browser has full capabilities
* `c` - This browser has degraded capabilities. Serve simpler version
* `x` - This browser has minimal capabilities and is probably not well detected.
9 years ago
There is no `b`. For unknown browsers, none of these flags may be set.
13 years ago
### Ender Support
13 years ago
`package.json`
13 years ago
``` json
"dependencies": {
"bowser": "x.x.x"
}
```
13 years ago
``` js
if (require('bowser').chrome) {
alert('Hello Silicon Valley')
}
```
### Contributing
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):
``` sh
$ npm install
$ make test
```
Please do not check-in the built files `bowser.js` and `bowser.min.js` in pull requests.
### Adding tests
See the list in `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.
9 years ago
### License
Licensed as MIT. All rights not explicitly granted in the MIT license are reserved. See the included LICENSE file for more details.