Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ You can also examine arbitrary useragents
$.browser.kindle
$.browser.linux
$.browser.mac
$.browser.msedge
$.browser.playbook
$.browser.silk
$.browser.win
Expand Down Expand Up @@ -86,6 +87,7 @@ Alternatively, you can detect for generic classifications such as desktop or mob
```

- Support for new useragent on IE 11
- Support for Microsoft Edge
- Support for WebKit based Opera browsers
- Added testing using PhantomJS and different browser user agents

Expand Down
12 changes: 10 additions & 2 deletions dist/jquery.browser.js
Original file line number Diff line number Diff line change
Expand Up @@ -101,14 +101,22 @@
}

// IE11 has a new token so we will assign it msie to avoid breaking changes
// IE12 disguises itself as Chrome, but adds a new Edge token.
if ( browser.rv || browser.edge || browser.iemobile) {
if ( browser.rv || browser.iemobile) {
var ie = "msie";

matched.browser = ie;
browser[ie] = true;
}

// Edge is officially known as Microsoft Edge, so rewrite the key to match
if ( browser.edge ) {
delete browser.edge;
var msedge = "msedge";

matched.browser = msedge;
browser[msedge] = true;
}

// Blackberry browsers are marked as Safari on BlackBerry
if ( browser.safari && browser.blackberry ) {
var blackberry = "blackberry";
Expand Down
92 changes: 76 additions & 16 deletions test/test.js
Original file line number Diff line number Diff line change
Expand Up @@ -40,18 +40,27 @@ var ua = {
name: "mozilla"
},
ie: {
windows : {
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"
},
win_phone : {
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)",
v_11: "Mozilla/5.0 (Mobile; Windows Phone 8.1; Android 4.0; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 520) like iPhone OS 7_0_3 Mac OS X AppleWebKit/537 (KHTML, like Gecko) Mobile Safari/537"
},
name: "msie"
},
msedge: {
windows: {
v_12: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.0",
v_13: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586"
},
win_phone: {
v_13: "Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; NOKIA; Lumia 950) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Mobile Safari/537.36 Edge/13.10586"
},
name: "msedge"
},
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",
Expand Down Expand Up @@ -489,8 +498,8 @@ casper.test.begin("when using IE10 on a Windows Phone", 7, function(test) {
});
});

casper.test.begin("when using IE11 on a Windows Phone", 7, function(test) {
casper.userAgent(ua.ie.win_phone.v_11);
casper.test.begin("when using IE11", 7, function(test) {
casper.userAgent(ua.ie.windows.v_11);

casper.start(test_url).then(function(){

Expand All @@ -504,8 +513,8 @@ casper.test.begin("when using IE11 on a Windows Phone", 7, function(test) {
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");

Expand All @@ -514,8 +523,8 @@ casper.test.begin("when using IE11 on a Windows Phone", 7, function(test) {
});
});

casper.test.begin("when using IE11", 7, function(test) {
casper.userAgent(ua.ie.windows.v_11);
casper.test.begin("when using IE11 on a Windows Phone", 7, function(test) {
casper.userAgent(ua.ie.win_phone.v_11);

casper.start(test_url).then(function(){

Expand All @@ -529,8 +538,8 @@ casper.test.begin("when using IE11", 7, function(test) {
test.assertEquals(browser.version, "11.0", "Version should be 11.0");
test.assertEquals(browser.versionNumber, 11, "Version should be 11");

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");

Expand All @@ -539,17 +548,17 @@ casper.test.begin("when using IE11", 7, function(test) {
});
});

casper.test.begin("when using IE12", 7, function(test) {
casper.userAgent(ua.ie.windows.v_12);
casper.test.begin("when using Microsoft Edge 12", 7, function(test) {
casper.userAgent(ua.msedge.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.assert(browser.msedge, "Browser should be MS Edge");
test.assertEquals(browser.name, ua.msedge.name,"Browser name should be " + ua.msedge.name);

test.assertEquals(browser.version, "12.0", "Version should be 12.0");
test.assertEquals(browser.versionNumber, 12, "Version should be 12");
Expand All @@ -564,6 +573,57 @@ casper.test.begin("when using IE12", 7, function(test) {
});
});

casper.test.begin("when using Microsoft Edge 13", 7, function(test) {
casper.userAgent(ua.msedge.windows.v_13);

casper.start(test_url).then(function(){

var browser = casper.evaluate(function(){
return $.browser;
});

test.assert(browser.msedge, "Browser should be MS Edge");
test.assertEquals(browser.name, ua.msedge.name,"Browser name should be " + ua.msedge.name);

test.assertEquals(browser.version, "13.10586", "Version should be 13.10586");
test.assertEquals(browser.versionNumber, 13, "Version should be 13");

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 Microsoft Edge v13 on a Windows Phone", 7, function(test) {
casper.userAgent(ua.msedge.win_phone.v_13);

casper.start(test_url).then(function(){

var browser = casper.evaluate(function(){
return $.browser;
});

test.assert(browser.msedge, "Browser should be MS Edge");
test.assertEquals(browser.name, ua.msedge.name,"Browser name should be " + ua.msedge.name);

test.assertEquals(browser.version, "13.10586", "Version should be 13.10586");
test.assertEquals(browser.versionNumber, 13, "Version should be 13");

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();
});
});


casper.test.begin("when using Opera 15+ on Windows", 7, function(test) {
casper.userAgent(ua.opera.v_15.windows);

Expand Down