1
0
mirror of https://github.com/lancedikson/bowser synced 2024-10-27 20:34:22 +00:00
Go to file
BendingBender 0da898f906 made version extraction less error-prone/more future-proof, will now always check
if result of regex match is truthy and array bounds are correct before actually
accessing the version number
2014-02-21 01:23:58 +01:00
make rebuild and new relase for IE, Opera, & Phantom 2013-08-16 12:58:39 -07:00
src made version extraction less error-prone/more future-proof, will now always check 2014-02-21 01:23:58 +01:00
test Merge branch 'origin/stable' into make-testable-and-add-tests 2014-02-20 09:34:55 +01:00
.gitignore boosh 2011-04-27 15:14:35 -07:00
bowser.js made version extraction less error-prone/more future-proof, will now always check 2014-02-21 01:23:58 +01:00
bowser.min.js made version extraction less error-prone/more future-proof, will now always check 2014-02-21 01:23:58 +01:00
Makefile Make testable and add tests. 2013-12-16 06:42:26 +01:00
package.json Merge branch 'origin/stable' into make-testable-and-add-tests 2014-02-20 09:34:55 +01:00
README.md Merge branch 'expand-browser-support' of https://github.com/Jimdo/bowser into make-testable-and-add-tests 2014-02-20 23:15:29 +01:00

Bowser

A Browser detector. Because sometimes, there is no other way, and not even good modern browsers always provide good feature detection mechanisms.

So... it works like this:

if (bowser.msie && bowser.version <= 6) {
  alert('Hello China');
}

Detected Browsers

  • android
  • blackberry
  • chrome[webkit]
  • firefox[gecko]
  • ipad
  • iphone
  • ipod
  • msie
  • opera
  • phantomjs
  • safari[webkit]
  • seamonkey
  • touchpad
  • webos
  • windows phone

Notes

Safari, Chrome, and Firefox will report that they have webkit|gecko engines

if (bowser.webkit) {
  // do stuff with safari & chrome
}

Ender installation

If you don't already have Ender (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:

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 chart, giving you access to each grade on the bowser object

if (bowser.a) {
  // support full feature set
}
else if (bowser.c) {
  // serve degraded version
}
else {
  // unsupported (bowser.x)
}

Building

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

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