@melloware/jquery.browser
v1.0.0
Published
A jQuery plugin for browser detection.
Maintainers
Readme
jQuery Browser Plugin
A jQuery plugin for browser detection. jQuery v1.9.1 dropped support for browser detection, and this project aims to keep the detection up-to-date. Now written in TypeScript with full type definitions and modern browser support including MS Edge.
Installation
NPM
npm install @melloware/jquery.browserBrowser
Include script after the jQuery library:
<script src="/path/to/jquery.browser.js"></script>Alternatively, you can use the plugin without jQuery by using the global object jQBrowser instead of $.browser.
Usage
JavaScript
Returns true if the current useragent is some version of Microsoft's Edge browser. Supports both legacy and Chromium based edge)
$.browser.msedge;Returns true if the current useragent is some version of a WebKit browser (Safari, Chrome, Opera 15+, and Chromium Edge)
$.browser.webkit;Returns true if the current useragent is some version of Firefox
$.browser.mozilla;Reading the browser version
$.browser.versionYou can also examine arbitrary useragents
jQBrowser.uaMatch("Mozilla/5.0...");TypeScript
The plugin includes full TypeScript type definitions:
import { BrowserDetection, uaMatch } from '@melloware/jquery.browser';
// Use with jQuery
if ($.browser.chrome) {
console.log(`Chrome version: ${$.browser.version}`);
}
// Use standalone
const browser = window.jQBrowser;
if (browser.msedge) {
console.log('Microsoft Edge detected');
}
// Match arbitrary user agent
const detection = uaMatch("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36...");
console.log(detection.name); // "msedge"Browser Detection Features
Browser Detection
The plugin detects the following browsers:
- Chrome
- Firefox (mozilla)
- Safari
- Internet Explorer (msie) - including IE 11
- Microsoft Edge (msedge) - both Legacy EdgeHTML and Chromium-based Edge
- Opera (both Presto and Chromium-based)
Platform Detection
Detect specifically Windows, Mac, Linux, iPad, iPhone, iPod, Android, Kindle, BlackBerry, Chrome OS, and Windows Phone useragents:
$.browser.android
$.browser.blackberry
$.browser.cros
$.browser.ipad
$.browser.iphone
$.browser.ipod
$.browser.kindle
$.browser.linux
$.browser.mac
$.browser.msedge
$.browser.playbook
$.browser.silk
$.browser.win
$.browser["windows phone"]Device Classification
Alternatively, you can detect for generic classifications such as desktop or mobile:
$.browser.desktop
$.browser.mobile// User Agent for Firefox on Windows
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0
$.browser.desktop // Returns true as a boolean// User Agent for Safari on iPhone
User-Agent: Mozilla/5.0(iPhone; CPU iPhone OS 7_0_3 like Mac OS X; en-us) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11B508 Safari/9537.53
$.browser.mobile // Returns true as a booleanVersion Detection
Detect the browser's major version:
// User Agent for Chrome
// Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1664.3 Safari/537.36
$.browser.versionNumber // Returns 32 as a number
$.browser.version // Returns "32.0.1664.3" as a stringFeatures
- Support for new useragent on IE 11
- Support for Microsoft Edge (both Legacy EdgeHTML and Chromium-based)
- Support for WebKit based Opera browsers
- Written in TypeScript with full type definitions
- Modern build system using esbuild
- Comprehensive test suite using Vitest
Development
Prerequisites
- Node.js >= 20.0.0
- npm
Building
Install dependencies:
npm installBuild the project:
npm run buildThis will:
- Compile TypeScript to JavaScript
- Generate type definitions (
.d.tsfiles) - Create IIFE bundle for browser use
- Generate minified version
The build outputs are placed in the dist/ directory:
dist/jquery.browser.js- Main bundle (IIFE format)dist/jquery.browser.min.js- Minified bundledist/jquery.browser.d.ts- TypeScript type definitionsdist/jquery.browser.d.ts.map- Source map for types
Type Checking
Run TypeScript type checking without emitting files:
npm run type-checkTesting
The plugin uses Vitest for testing. All tests run in a Node.js environment with jsdom for browser API simulation.
# Run tests once
npm test
# Run tests in watch mode
npm run test:watch
# Run tests with UI
npm run test:uiThe test suite covers:
- All major browsers (Chrome, Firefox, Safari, IE, Edge, Opera)
- All platforms (Windows, Mac, Linux, mobile platforms)
- Browser version detection
- Platform detection
- Mobile/desktop classification
- Custom user agent matching
Project Structure
├── src/
│ └── jquery.browser.ts # TypeScript source
├── dist/
│ ├── jquery.browser.js # Compiled IIFE bundle
│ ├── jquery.browser.min.js # Minified bundle
│ ├── jquery.browser.d.ts # Type definitions
│ └── jquery.browser.d.ts.map # Type definition source map
├── test/
│ ├── jquery.browser.test.ts # Vitest test suite
│ └── setup.ts # Test setup
├── tsconfig.json # TypeScript configuration
├── vitest.config.ts # Vitest configuration
├── package.json
└── README.mdPublishing
Pre-publish Checklist
Before publishing, ensure:
Build the project:
npm run buildRun tests:
npm testVerify package contents:
npm pack --dry-runThis shows what files will be included in the published package.
Check version number:
- Update version in
package.jsonif needed - Update version in build script banners if needed
- Update version in
Publishing to npm
Login to npm:
npm loginMake sure you're logged in with an account that has access to the
@mellowarescope.Verify you're logged in:
npm whoamiBuild the package:
npm run buildPublish the package:
For scoped packages, you need to publish with public access:
npm publish --access publicOr configure the scope in your
.npmrcfile:echo "@melloware:registry=https://registry.npmjs.org/" >> .npmrc echo "//registry.npmjs.org/:_authToken=YOUR_TOKEN" >> .npmrcThen publish normally:
npm publishVerify publication: Visit https://www.npmjs.com/package/@melloware/jquery.browser to confirm the package is published.
Version Management
Follow Semantic Versioning:
- MAJOR version for incompatible API changes
- MINOR version for backwards-compatible functionality additions
- PATCH version for backwards-compatible bug fixes
Update version in package.json:
{
"version": "1.0.1" // or "1.1.0" or "2.0.0"
}Then rebuild and republish:
npm run build
npm publish --access publicBrowser Support
The plugin supports detection for:
- Chrome (all versions)
- Firefox (all versions)
- Safari (all versions)
- Internet Explorer (IE 6-11)
- Microsoft Edge (Legacy EdgeHTML and Chromium-based)
- Opera (Presto and Chromium-based)
- Mobile browsers (Android, iOS Safari, Windows Phone)
- Other browsers (Kindle, Silk, BlackBerry)
Contributing
- Source hosted at GitHub
- Report issues, questions, feature requests on GitHub Issues
License
MIT
Attributions
- Examples and original implementation
- Original Gist used for the plugin
- Original plugin by Gabriel Cebrian
- Modernized by Melloware
