From ae5e88aa7a26f583e8865c3961ba857918c4c9c1 Mon Sep 17 00:00:00 2001 From: JC Brand Date: Mon, 6 Oct 2014 21:24:09 +0200 Subject: [PATCH 1/7] Make the plugin AMD friendly. --- dist/jquery.browser.js | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/dist/jquery.browser.js b/dist/jquery.browser.js index 3bb26d7..b22317b 100644 --- a/dist/jquery.browser.js +++ b/dist/jquery.browser.js @@ -13,7 +13,17 @@ * Date: 2013-07-29T17:23:27-07:00 */ -(function( jQuery, window, undefined ) { +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(['jquery'], function ($) { + factory($, root); + }); + } else { + // Browser globals + factory(jQuery, root); + } +}(this, function(jQuery, window) { "use strict"; var matched, browser; @@ -107,6 +117,6 @@ browser.name = matched.browser; browser.platform = matched.platform; - jQuery.browser = browser; -})( jQuery, window ); \ No newline at end of file + return browser; +})); From 8b1f3699eea825717fe8210d5fb47e269e2e9315 Mon Sep 17 00:00:00 2001 From: phistuck Date: Sun, 16 Nov 2014 16:06:23 +0200 Subject: [PATCH 2/7] Supported the deceptive Internet Explorer 12 Internet Explorer 12 disguises as Chrome 36, but adds a new Edge/x.x token. https://gist.github.com/jacobrossi/c9699b27df2f4e97c0bd Sneaky. --- dist/jquery.browser.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/dist/jquery.browser.js b/dist/jquery.browser.js index b22317b..ddacbe6 100644 --- a/dist/jquery.browser.js +++ b/dist/jquery.browser.js @@ -31,7 +31,8 @@ jQuery.uaMatch = function( ua ) { ua = ua.toLowerCase(); - var match = /(opr)[\/]([\w.]+)/.exec( ua ) || + var match = /(edge)\/([\w.]+)/.exec( ua ) || + /(opr)[\/]([\w.]+)/.exec( ua ) || /(chrome)[ \/]([\w.]+)/.exec( ua ) || /(version)[ \/]([\w.]+).*(safari)[ \/]([\w.]+)/.exec( ua ) || /(webkit)[ \/]([\w.]+)/.exec( ua ) || @@ -87,7 +88,8 @@ } // IE11 has a new token so we will assign it msie to avoid breaking changes - if ( browser.rv ) + // IE12 disguises as Chrome, but adds a new Edge token. + if ( browser.rv || browser.edge ) { var ie = "msie"; From 649d140458c1a0c97b3f58a3953222a3c998f2ce Mon Sep 17 00:00:00 2001 From: phistuck Date: Mon, 17 Nov 2014 10:37:25 +0200 Subject: [PATCH 3/7] Added a test for desktop Internet Explorer 12 A simple copy and paste of the Internet Explorer 11 test and a few digit change. --- test/test.js | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/test/test.js b/test/test.js index 538d96b..06a0529 100644 --- a/test/test.js +++ b/test/test.js @@ -40,7 +40,8 @@ ua = { windows : { v_9: "Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.0; Trident/5.0)", v_10: "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)", - v_11: 'Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko' + v_11: 'Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko', + v_12: 'Mozilla/5.0 (Windows NT 6.4; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36 Edge/12.0' }, win_phone : { v_10: "Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 1020)" @@ -445,6 +446,31 @@ casper.test.begin("when using IE10 on a Windows Phone", 7, function(test) { }); }); +casper.test.begin("when using IE12", 7, function(test) { + casper.userAgent(ua.ie.windows.v_12); + + casper.start(test_url).then(function(){ + + var browser = casper.evaluate(function(){ + return $.browser; + }); + + test.assert(browser.msie, "Browser should be IE"); + test.assertEquals(browser.name, ua.ie.name,"Browser name should be " + ua.ie.name); + + test.assertEquals(browser.version, "12.0", "Version should be 12.0"); + test.assertEquals(browser.versionNumber, 12, "Version should be 12"); + + test.assert(browser.desktop, "Browser platform should be desktop"); + test.assert(browser.win, "Platform should be Windows"); + + test.assertFalsy(browser.webkit, "Browser should NOT be WebKit based"); + + }).run(function(){ + test.done(); + }); +}); + casper.test.begin("when using Opera 15+ on Windows", 7, function(test) { casper.userAgent(ua.opera.v_15.windows); From 1b56b02c7a059e77c1f380ffb62874b6ef4baaeb Mon Sep 17 00:00:00 2001 From: phistuck Date: Mon, 17 Nov 2014 23:15:39 +0200 Subject: [PATCH 4/7] Fixed a whitespace and tab inconsistency There were only whitespace characters, while the rest of the lines use a weird combination of tabs and spaces, but general consistency within a file comes first. --- dist/jquery.browser.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dist/jquery.browser.js b/dist/jquery.browser.js index ddacbe6..73cebce 100644 --- a/dist/jquery.browser.js +++ b/dist/jquery.browser.js @@ -32,7 +32,7 @@ ua = ua.toLowerCase(); var match = /(edge)\/([\w.]+)/.exec( ua ) || - /(opr)[\/]([\w.]+)/.exec( ua ) || + /(opr)[\/]([\w.]+)/.exec( ua ) || /(chrome)[ \/]([\w.]+)/.exec( ua ) || /(version)[ \/]([\w.]+).*(safari)[ \/]([\w.]+)/.exec( ua ) || /(webkit)[ \/]([\w.]+)/.exec( ua ) || From 489a4c8e6c14a51347f32d11730e82008a571c77 Mon Sep 17 00:00:00 2001 From: Triangle717 Date: Mon, 17 Nov 2014 16:28:06 -0500 Subject: [PATCH 5/7] Add a much needed .editorconfig --- .editorconfig | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 .editorconfig diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..85cb735 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,8 @@ +# EditorConfig.org +root = true + +[*] +insert_final_newline = true +trim_trailing_whitespace = true +indent_style = space +indent_size = 2 From 75f0cc30e2c2f1071c1eee194927bfbca9953efb Mon Sep 17 00:00:00 2001 From: Triangle717 Date: Mon, 17 Nov 2014 16:34:07 -0500 Subject: [PATCH 6/7] Make script consistently use 2 spaces, * Do the same for tests * Fix lint errors in test * Do same in Gruntfile * Set JSHint to lint tests --- Gruntfile.js | 88 ++++++++++++++++---------------- dist/jquery.browser.js | 113 ++++++++++++++++++++--------------------- test/test.js | 106 +++++++++++++++++++------------------- 3 files changed, 153 insertions(+), 154 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index ef523ae..0291f8a 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -1,47 +1,47 @@ -module.exports = function(grunt) { - grunt.initConfig({ - pkg: grunt.file.readJSON('package.json'), - jshint: { - files: ['gruntfile.js', 'jquery.browser.js'], +module.exports = function(grunt) { + grunt.initConfig({ + pkg: grunt.file.readJSON('package.json'), + jshint: { + files: ['gruntfile.js', 'jquery.browser.js', 'test/test.js'], - options: { - globals: { - jQuery: true, - console: true, - module: true - } - } - }, - uglify: { - options: { - banner: '/*!\n * jQuery Browser Plugin <%= pkg.version %>\n * https://github.com/gabceb/jquery-browser-plugin\n *\n * Original jquery-browser code Copyright 2005, 2013 jQuery Foundation, Inc. and other contributors\n * http://jquery.org/license\n *\n * Modifications Copyright <%= grunt.template.today("yyyy") %> Gabriel Cebrian\n * https://github.com/gabceb\n *\n * Released under the MIT license\n *\n * Date: <%= grunt.template.today("dd-mm-yyyy")%>\n */' - }, - dist: { - files: { - 'dist/<%= pkg.name %>.min.js': 'dist/<%= pkg.name %>.js' - } - } - }, - copy: { - main:{ - src: "dist/<%= pkg.name %>.js", - dest: "test/src/<%= pkg.name %>.js" - } - }, - exec: { - test: { - command: "casperjs test test/test.js", - stdout: true, - stderr: true - } - } - }); + options: { + globals: { + jQuery: true, + console: true, + module: true + } + } + }, + uglify: { + options: { + banner: '/*!\n * jQuery Browser Plugin <%= pkg.version %>\n * https://github.com/gabceb/jquery-browser-plugin\n *\n * Original jquery-browser code Copyright 2005, 2013 jQuery Foundation, Inc. and other contributors\n * http://jquery.org/license\n *\n * Modifications Copyright <%= grunt.template.today("yyyy") %> Gabriel Cebrian\n * https://github.com/gabceb\n *\n * Released under the MIT license\n *\n * Date: <%= grunt.template.today("dd-mm-yyyy")%>\n */' + }, + dist: { + files: { + 'dist/<%= pkg.name %>.min.js': 'dist/<%= pkg.name %>.js' + } + } + }, + copy: { + main:{ + src: "dist/<%= pkg.name %>.js", + dest: "test/src/<%= pkg.name %>.js" + } + }, + exec: { + test: { + command: "casperjs test test/test.js", + stdout: true, + stderr: true + } + } + }); - grunt.loadNpmTasks('grunt-contrib-jshint'); - grunt.loadNpmTasks('grunt-contrib-uglify'); - grunt.loadNpmTasks('grunt-contrib-copy'); - grunt.loadNpmTasks('grunt-exec'); + grunt.loadNpmTasks('grunt-contrib-jshint'); + grunt.loadNpmTasks('grunt-contrib-uglify'); + grunt.loadNpmTasks('grunt-contrib-copy'); + grunt.loadNpmTasks('grunt-exec'); - grunt.registerTask('default', ['jshint', 'uglify', 'copy']); - grunt.registerTask('test', ['default', 'exec']); -}; \ No newline at end of file + grunt.registerTask('default', ['jshint', 'uglify', 'copy']); + grunt.registerTask('test', ['default', 'exec']); +}; diff --git a/dist/jquery.browser.js b/dist/jquery.browser.js index 73cebce..c312d74 100644 --- a/dist/jquery.browser.js +++ b/dist/jquery.browser.js @@ -14,15 +14,15 @@ */ (function (root, factory) { - if (typeof define === 'function' && define.amd) { - // AMD. Register as an anonymous module. - define(['jquery'], function ($) { - factory($, root); - }); - } else { - // Browser globals - factory(jQuery, root); - } + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(['jquery'], function ($) { + factory($, root); + }); + } else { + // Browser globals + factory(jQuery, root); + } }(this, function(jQuery, window) { "use strict"; @@ -31,88 +31,85 @@ jQuery.uaMatch = function( ua ) { ua = ua.toLowerCase(); - var match = /(edge)\/([\w.]+)/.exec( ua ) || - /(opr)[\/]([\w.]+)/.exec( ua ) || - /(chrome)[ \/]([\w.]+)/.exec( ua ) || - /(version)[ \/]([\w.]+).*(safari)[ \/]([\w.]+)/.exec( ua ) || - /(webkit)[ \/]([\w.]+)/.exec( ua ) || - /(opera)(?:.*version|)[ \/]([\w.]+)/.exec( ua ) || - /(msie) ([\w.]+)/.exec( ua ) || - ua.indexOf("trident") >= 0 && /(rv)(?::| )([\w.]+)/.exec( ua ) || - ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec( ua ) || - []; - - var platform_match = /(ipad)/.exec( ua ) || - /(iphone)/.exec( ua ) || - /(android)/.exec( ua ) || - /(windows phone)/.exec( ua ) || - /(win)/.exec( ua ) || - /(mac)/.exec( ua ) || - /(linux)/.exec( ua ) || - /(cros)/i.exec( ua ) || - []; - - return { - browser: match[ 3 ] || match[ 1 ] || "", - version: match[ 2 ] || "0", - platform: platform_match[ 0 ] || "" - }; + var match = /(edge)\/([\w.]+)/.exec( ua ) || + /(opr)[\/]([\w.]+)/.exec( ua ) || + /(chrome)[ \/]([\w.]+)/.exec( ua ) || + /(version)[ \/]([\w.]+).*(safari)[ \/]([\w.]+)/.exec( ua ) || + /(webkit)[ \/]([\w.]+)/.exec( ua ) || + /(opera)(?:.*version|)[ \/]([\w.]+)/.exec( ua ) || + /(msie) ([\w.]+)/.exec( ua ) || + ua.indexOf("trident") >= 0 && /(rv)(?::| )([\w.]+)/.exec( ua ) || + ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec( ua ) || + []; + + var platform_match = /(ipad)/.exec( ua ) || + /(iphone)/.exec( ua ) || + /(android)/.exec( ua ) || + /(windows phone)/.exec( ua ) || + /(win)/.exec( ua ) || + /(mac)/.exec( ua ) || + /(linux)/.exec( ua ) || + /(cros)/i.exec( ua ) || + []; + + return { + browser: match[ 3 ] || match[ 1 ] || "", + version: match[ 2 ] || "0", + platform: platform_match[ 0 ] || "" + }; }; matched = jQuery.uaMatch( window.navigator.userAgent ); browser = {}; if ( matched.browser ) { - browser[ matched.browser ] = true; - browser.version = matched.version; - browser.versionNumber = parseInt(matched.version); + browser[ matched.browser ] = true; + browser.version = matched.version; + browser.versionNumber = parseInt(matched.version); } if ( matched.platform ) { - browser[ matched.platform ] = true; + browser[ matched.platform ] = true; } // These are all considered mobile platforms, meaning they run a mobile browser if ( browser.android || browser.ipad || browser.iphone || browser[ "windows phone" ] ) { - browser.mobile = true; + browser.mobile = true; } // These are all considered desktop platforms, meaning they run a desktop browser if ( browser.cros || browser.mac || browser.linux || browser.win ) { - browser.desktop = true; + browser.desktop = true; } // Chrome, Opera 15+ and Safari are webkit based browsers if ( browser.chrome || browser.opr || browser.safari ) { - browser.webkit = true; + browser.webkit = true; } // IE11 has a new token so we will assign it msie to avoid breaking changes - // IE12 disguises as Chrome, but adds a new Edge token. - if ( browser.rv || browser.edge ) - { - var ie = "msie"; + // IE12 disguises itself as Chrome, but adds a new Edge token. + if ( browser.rv || browser.edge ) { + var ie = "msie"; - matched.browser = ie; - browser[ie] = true; + matched.browser = ie; + browser[ie] = true; } // Opera 15+ are identified as opr - if ( browser.opr ) - { - var opera = "opera"; + if ( browser.opr ) { + var opera = "opera"; - matched.browser = opera; - browser[opera] = true; + matched.browser = opera; + browser[opera] = true; } // Stock Android browsers are marked as Safari on Android. - if ( browser.safari && browser.android ) - { - var android = "android"; + if ( browser.safari && browser.android ) { + var android = "android"; - matched.browser = android; - browser[android] = true; + matched.browser = android; + browser[android] = true; } // Assign the name and platform variable diff --git a/test/test.js b/test/test.js index 06a0529..e12beb8 100644 --- a/test/test.js +++ b/test/test.js @@ -1,77 +1,79 @@ -test_url = "http://localhost:8008"; +/*global casper, require, $ */ -require('casperserver.js').create(casper); +var test_url = "http://localhost:8008"; + +require("casperserver.js").create(casper); casper.server.start(); -casper.on('exit', function(status){ +casper.on("exit", function(status){ casper.server.end(); }); -ua = { - chrome : { +var ua = { + chrome: { windows: "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1664.3 Safari/537.36", mac: "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", android: "Mozilla/5.0 (Linux; Android 4.0.4; Galaxy Nexus Build/IMM76B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1664.3 Mobile Safari/537.36", linux: "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1664.3 Safari/537.36", cros: "Mozilla/5.0 (X11; CrOS i686 14.811.2011) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.834.0 Safari/535.1", - version : "32.0.1664.3", - versionNumber : 32, + version: "32.0.1664.3", + versionNumber: 32, chromeOsVersion: "14.0.834.0", chromeOsVersionNumber: 14, - name : "chrome" + name: "chrome" }, - safari : { + safari: { mac: "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9) AppleWebKit/537.71 (KHTML, like Gecko) Version/7.0 Safari/537.71", ipad: "Mozilla/5.0 (iPad; CPU OS 7_0 like Mac OS X) AppleWebKit/537.71 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53", iphone: "Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X) AppleWebKit/537.71 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53", version: "537.71", versionNumber: 7, - name : "safari" + name: "safari" }, - firefox : { + firefox: { windows: "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0", mac: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:25.0) Gecko/20100101 Firefox/25.0", linux: "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:25.0) Gecko/20100101 Firefox/25.0", version: "25.0", versionNumber: 25, - name : "mozilla" + name: "mozilla" }, - ie : { + ie: { windows : { v_9: "Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.0; Trident/5.0)", v_10: "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)", - v_11: 'Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko', - v_12: 'Mozilla/5.0 (Windows NT 6.4; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36 Edge/12.0' + v_11: "Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko", + v_12: "Mozilla/5.0 (Windows NT 6.4; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36 Edge/12.0" }, win_phone : { v_10: "Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 1020)" }, - name : "msie" + name: "msie" }, - opera : { + opera: { v_15: { - mac : "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.20 Safari/537.36 OPR/15.0.1147.18", + mac: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.20 Safari/537.36 OPR/15.0.1147.18", windows: "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.20 Safari/537.36 OPR/15.0.1147.18", version: "15.0.1147.18", versionNumber: 15 }, v_10: { - mac : "Opera/9.80 (Macintosh; Intel Mac OS X; U; en) Presto/2.2.15 Version/10.00", + mac: "Opera/9.80 (Macintosh; Intel Mac OS X; U; en) Presto/2.2.15 Version/10.00", windows: "Opera/9.80 (Windows NT 6.1; U; en) Presto/2.6.30 Version/10.00", version: "10.00", versionNumber: 10 }, v_12: { - mac : "Opera/9.80 (Macintosh; Intel Mac OS X; U; en) Presto/2.2.15 Version/12.11", + mac: "Opera/9.80 (Macintosh; Intel Mac OS X; U; en) Presto/2.2.15 Version/12.11", windows: "Opera/9.80 (Windows NT 6.1; U; en) Presto/2.6.30 Version/12.11", version: "12.11", versionNumber: 12 }, - name : "opera" + name: "opera" }, - android : { + android: { v_4_4: { - android : "Mozilla/5.0 (Linux; Android 4.4.1; Nexus 5 Build/KOT49E) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.36", + android: "Mozilla/5.0 (Linux; Android 4.4.1; Nexus 5 Build/KOT49E) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.36", version: "537.36", versionNumber: 4 }, @@ -83,7 +85,7 @@ casper.test.begin("when using Chrome on Windows", 7, function(test) { casper.userAgent(ua.chrome.windows); casper.start(test_url).then(function(){ - + var browser = casper.evaluate(function(){ return $.browser; }); @@ -135,7 +137,7 @@ casper.test.begin("when using Chrome on an Android device", 7, function(test) { var browser = casper.evaluate(function(){ return $.browser; }); - + test.assert(browser.chrome, "Browser should be Chrome"); test.assertEquals(browser.name, ua.chrome.name,"Browser name should be " + ua.chrome.name); @@ -159,7 +161,7 @@ casper.test.begin("when using Chrome on Linux", 7, function(test) { var browser = casper.evaluate(function(){ return $.browser; }); - + test.assert(browser.chrome, "Browser should be Chrome"); test.assertEquals(browser.name, ua.chrome.name,"Browser name should be " + ua.chrome.name); @@ -183,7 +185,7 @@ casper.test.begin("when using Chrome on Chrome OS", 7, function(test) { var browser = casper.evaluate(function(){ return $.browser; }); - + test.assert(browser.chrome, "Browser should be Chrome"); test.assertEquals(browser.name, ua.chrome.name,"Browser name should be " + ua.chrome.name); @@ -203,7 +205,7 @@ casper.test.begin("when using Firefox on Windows", 7, function(test) { casper.userAgent(ua.firefox.windows); casper.start(test_url).then(function(){ - + var browser = casper.evaluate(function(){ return $.browser; }); @@ -228,7 +230,7 @@ casper.test.begin("when using Firefox on Mac", 7, function(test) { casper.userAgent(ua.firefox.mac); casper.start(test_url).then(function(){ - + var browser = casper.evaluate(function(){ return $.browser; }); @@ -257,7 +259,7 @@ casper.test.begin("when using Firefox on Linux", 7, function(test) { var browser = casper.evaluate(function(){ return $.browser; }); - + test.assert(browser.mozilla, "Browser should be Mozilla"); test.assertEquals(browser.name, ua.firefox.name,"Browser name should be " + ua.firefox.name); @@ -278,7 +280,7 @@ casper.test.begin("when using Safari on Mac", 7, function(test) { casper.userAgent(ua.safari.mac); casper.start(test_url).then(function(){ - + var browser = casper.evaluate(function(){ return $.browser; }); @@ -302,11 +304,11 @@ casper.test.begin("when using Safari on iPad", 7, function(test) { casper.userAgent(ua.safari.ipad); casper.start(test_url).then(function(){ - + var browser = casper.evaluate(function(){ return $.browser; }); - + test.assert(browser.safari, "Browser should be Safari"); test.assertEquals(browser.name, ua.safari.name,"Browser name should be " + ua.safari.name); @@ -326,11 +328,11 @@ casper.test.begin("when using Safari on iPhone", 7, function(test) { casper.userAgent(ua.safari.iphone); casper.start(test_url).then(function(){ - + var browser = casper.evaluate(function(){ return $.browser; }); - + test.assert(browser.safari, "Browser should be Safari"); test.assertEquals(browser.name, ua.safari.name,"Browser name should be " + ua.safari.name); @@ -350,11 +352,11 @@ casper.test.begin("when using IE9", 7, function(test) { casper.userAgent(ua.ie.windows.v_9); casper.start(test_url).then(function(){ - + var browser = casper.evaluate(function(){ return $.browser; }); - + test.assert(browser.msie, "Browser should be IE"); test.assertEquals(browser.name, ua.ie.name,"Browser name should be " + ua.ie.name); @@ -375,11 +377,11 @@ casper.test.begin("when using IE10", 7, function(test) { casper.userAgent(ua.ie.windows.v_10); casper.start(test_url).then(function(){ - + var browser = casper.evaluate(function(){ return $.browser; }); - + test.assert(browser.msie, "Browser should be IE"); test.assertEquals(browser.name, ua.ie.name,"Browser name should be " + ua.ie.name); @@ -400,11 +402,11 @@ casper.test.begin("when using IE11", 7, function(test) { casper.userAgent(ua.ie.windows.v_11); casper.start(test_url).then(function(){ - + var browser = casper.evaluate(function(){ return $.browser; }); - + test.assert(browser.msie, "Browser should be IE"); test.assertEquals(browser.name, ua.ie.name,"Browser name should be " + ua.ie.name); @@ -429,7 +431,7 @@ casper.test.begin("when using IE10 on a Windows Phone", 7, function(test) { var browser = casper.evaluate(function(){ return $.browser; }); - + test.assert(browser.msie, "Browser should be IE"); test.assertEquals(browser.name, ua.ie.name,"Browser name should be " + ua.ie.name); @@ -450,11 +452,11 @@ casper.test.begin("when using IE12", 7, function(test) { casper.userAgent(ua.ie.windows.v_12); casper.start(test_url).then(function(){ - + var browser = casper.evaluate(function(){ return $.browser; }); - + test.assert(browser.msie, "Browser should be IE"); test.assertEquals(browser.name, ua.ie.name,"Browser name should be " + ua.ie.name); @@ -479,7 +481,7 @@ casper.test.begin("when using Opera 15+ on Windows", 7, function(test) { var browser = casper.evaluate(function(){ return $.browser; }); - + test.assert(browser.opera, "Browser should be Opera"); test.assertEquals(browser.name, ua.opera.name,"Browser name should be " + ua.opera.name); @@ -504,11 +506,11 @@ casper.test.begin("when using Opera 15+ on Mac", 7, function(test) { var browser = casper.evaluate(function(){ return $.browser; }); - + test.assert(browser.opera, "Browser should be Opera"); test.assertEquals(browser.name, ua.opera.name,"Browser name should be " + ua.opera.name); - test.assertEquals(browser.version, ua.opera.v_15.version, "Version should be " + ua.opera.v_15.version) + test.assertEquals(browser.version, ua.opera.v_15.version, "Version should be " + ua.opera.v_15.version); test.assertEquals(browser.versionNumber, ua.opera.v_15.versionNumber, "Version number should be " + ua.opera.v_15.versionNumber); test.assert(browser.desktop, "Browser platform should be desktop"); @@ -529,7 +531,7 @@ casper.test.begin("when using Opera 10 on Windows", 7, function(test) { var browser = casper.evaluate(function(){ return $.browser; }); - + test.assert(browser.opera, "Browser should be Opera"); test.assertEquals(browser.name, ua.opera.name,"Browser name should be " + ua.opera.name); @@ -554,7 +556,7 @@ casper.test.begin("when using Opera 10 on Mac", 7, function(test) { var browser = casper.evaluate(function(){ return $.browser; }); - + test.assert(browser.opera, "Browser should be Opera"); test.assertEquals(browser.name, ua.opera.name,"Browser name should be " + ua.opera.name); @@ -579,7 +581,7 @@ casper.test.begin("when using Opera 12.11 on Windows", 7, function(test) { var browser = casper.evaluate(function(){ return $.browser; }); - + test.assert(browser.opera, "Browser should be Opera"); test.assertEquals(browser.name, ua.opera.name,"Browser name should be " + ua.opera.name); @@ -604,7 +606,7 @@ casper.test.begin("when using Opera 12.11 on Mac", 7, function(test) { var browser = casper.evaluate(function(){ return $.browser; }); - + test.assert(browser.opera, "Browser should be Opera"); test.assertEquals(browser.name, ua.opera.name,"Browser name should be " + ua.opera.name); @@ -629,7 +631,7 @@ casper.test.begin("when using Android 4.4 stock browser on Android", 6, function var browser = casper.evaluate(function(){ return $.browser; }); - + test.assert(browser.android, "Browser should be Android"); test.assertEquals(browser.name, ua.android.name,"Browser name should be " + ua.android.name); From 6a8a428b6c33b5e81d5224ec1b110ef175b07a99 Mon Sep 17 00:00:00 2001 From: Triangle717 Date: Tue, 18 Nov 2014 10:59:27 -0500 Subject: [PATCH 7/7] For #46. --- Gruntfile.js | 2 +- README.md | 7 ++----- dist/jquery.browser.js | 14 ++++++++------ test/test.js | 27 ++++++++++++++------------- 4 files changed, 25 insertions(+), 25 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index 0291f8a..bf401eb 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -2,7 +2,7 @@ module.exports = function(grunt) { grunt.initConfig({ pkg: grunt.file.readJSON('package.json'), jshint: { - files: ['gruntfile.js', 'jquery.browser.js', 'test/test.js'], + files: ['Gruntfile.js', 'dist/jquery.browser.js', 'test/test.js'], options: { globals: { diff --git a/README.md b/README.md index 6b29fc3..2a48746 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ Include script *after* the jQuery library: ## Usage -Returns true if the current useragent is some version of Microsoft's Internet Explorer. Supports all IE versions including IE11 +Returns true if the current useragent is some version of Microsoft's Internet Explorer. Supports all IE versions including IE 12. $.browser.msie; @@ -66,7 +66,7 @@ Reading the browser verion $.browser.versionNumber // Returns 32 as a number ``` -- Support for new useragent on IE11 +- Support for new useragent on IE 11 and IE 12 - Support for WebKit based Opera browsers - Added testing using PhantomJS and different browser user agents @@ -94,6 +94,3 @@ Once Casperjs and the grunt-cli npm package is installed you can execute all the - [Examples and original implementation](http://api.jquery.com/jQuery.browser/) - [Original Gist used for the plugin](https://gist.github.com/adeelejaz/4714079) - -[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/gabceb/jquery-browser-plugin/trend.png)](https://bitdeli.com/free "Bitdeli Badge") - diff --git a/dist/jquery.browser.js b/dist/jquery.browser.js index c312d74..a56e816 100644 --- a/dist/jquery.browser.js +++ b/dist/jquery.browser.js @@ -17,7 +17,7 @@ if (typeof define === 'function' && define.amd) { // AMD. Register as an anonymous module. define(['jquery'], function ($) { - factory($, root); + factory($, root); }); } else { // Browser globals @@ -34,7 +34,8 @@ var match = /(edge)\/([\w.]+)/.exec( ua ) || /(opr)[\/]([\w.]+)/.exec( ua ) || /(chrome)[ \/]([\w.]+)/.exec( ua ) || - /(version)[ \/]([\w.]+).*(safari)[ \/]([\w.]+)/.exec( ua ) || + /(version)(applewebkit)[ \/]([\w.]+).*(safari)[ \/]([\w.]+)/.exec( ua ) || + /(webkit)[ \/]([\w.]+).*(version)[ \/]([\w.]+).*(safari)[ \/]([\w.]+)/.exec( ua ) || /(webkit)[ \/]([\w.]+)/.exec( ua ) || /(opera)(?:.*version|)[ \/]([\w.]+)/.exec( ua ) || /(msie) ([\w.]+)/.exec( ua ) || @@ -49,12 +50,13 @@ /(win)/.exec( ua ) || /(mac)/.exec( ua ) || /(linux)/.exec( ua ) || - /(cros)/i.exec( ua ) || + /(cros)/.exec( ua ) || []; return { - browser: match[ 3 ] || match[ 1 ] || "", - version: match[ 2 ] || "0", + browser: match[ 5 ] || match[ 3 ] || match[ 1 ] || "", + version: match[ 2 ] || match[ 4 ] || "0", + versionNumber: match[ 4 ] || match[ 2 ] || "0", platform: platform_match[ 0 ] || "" }; }; @@ -65,7 +67,7 @@ if ( matched.browser ) { browser[ matched.browser ] = true; browser.version = matched.version; - browser.versionNumber = parseInt(matched.version); + browser.versionNumber = parseInt(matched.versionNumber, 10); } if ( matched.platform ) { diff --git a/test/test.js b/test/test.js index e12beb8..82e3937 100644 --- a/test/test.js +++ b/test/test.js @@ -398,8 +398,9 @@ casper.test.begin("when using IE10", 7, function(test) { }); }); -casper.test.begin("when using IE11", 7, function(test) { - casper.userAgent(ua.ie.windows.v_11); + +casper.test.begin("when using IE10 on a Windows Phone", 7, function(test) { + casper.userAgent(ua.ie.win_phone.v_10); casper.start(test_url).then(function(){ @@ -410,21 +411,21 @@ casper.test.begin("when using IE11", 7, function(test) { test.assert(browser.msie, "Browser should be IE"); test.assertEquals(browser.name, ua.ie.name,"Browser name should be " + ua.ie.name); - test.assertEquals(browser.version, "11.0", "Version should be 11.0"); - test.assertEquals(browser.versionNumber, 11, "Version should be 11"); + test.assertEquals(browser.version, "10.0", "Version should be 10.0"); + test.assertEquals(browser.versionNumber, 10, "Version should be 10"); - test.assert(browser.desktop, "Browser platform should be desktop"); - test.assert(browser.win, "Platform should be Windows"); + test.assert(browser.mobile, "Browser platform should be mobile"); + test.assert(browser["windows phone"], "Platform should be Windows Phone"); test.assertFalsy(browser.webkit, "Browser should NOT be WebKit based"); }).run(function(){ - test.done(); + test.done(); }); }); -casper.test.begin("when using IE10 on a Windows Phone", 7, function(test) { - casper.userAgent(ua.ie.win_phone.v_10); +casper.test.begin("when using IE11", 7, function(test) { + casper.userAgent(ua.ie.windows.v_11); casper.start(test_url).then(function(){ @@ -435,11 +436,11 @@ casper.test.begin("when using IE10 on a Windows Phone", 7, function(test) { test.assert(browser.msie, "Browser should be IE"); test.assertEquals(browser.name, ua.ie.name,"Browser name should be " + ua.ie.name); - test.assertEquals(browser.version, "10.0", "Version should be 10.0"); - test.assertEquals(browser.versionNumber, 10, "Version should be 10"); + test.assertEquals(browser.version, "11.0", "Version should be 11.0"); + test.assertEquals(browser.versionNumber, 11, "Version should be 11"); - test.assert(browser.mobile, "Browser platform should be mobile"); - test.assert(browser["windows phone"], "Platform should be Windows Phone"); + test.assert(browser.desktop, "Browser platform should be desktop"); + test.assert(browser.win, "Platform should be Windows"); test.assertFalsy(browser.webkit, "Browser should NOT be WebKit based");