From 9008d8d351beb05379d89ce7b8d3d250d2f5e9d1 Mon Sep 17 00:00:00 2001 From: Roman Konstantinovich Date: Thu, 11 Dec 2014 16:47:46 +0500 Subject: [PATCH] fix($location): right button click in firefox When user click right mouse button on links in firefox, browser goes to link. See http://jsfiddle.net/kromxr/76fKM/12/ Closes #7984 Conflicts: src/ng/location.js test/ng/locationSpec.js --- src/ng/location.js | 2 +- test/ng/locationSpec.js | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/src/ng/location.js b/src/ng/location.js index 337681fa1232..e462e6d7b56a 100644 --- a/src/ng/location.js +++ b/src/ng/location.js @@ -837,7 +837,7 @@ function $LocationProvider() { // TODO(vojta): rewrite link when opening in new tab/window (in legacy browser) // currently we open nice url link and redirect then - if (!html5Mode.rewriteLinks || event.ctrlKey || event.metaKey || event.which == 2) return; + if (!html5Mode.rewriteLinks || event.ctrlKey || event.metaKey || event.which == 2 || event.button == 2) return; var elm = jqLite(event.target); diff --git a/test/ng/locationSpec.js b/test/ng/locationSpec.js index 1ba121900546..7b9cb76f5585 100644 --- a/test/ng/locationSpec.js +++ b/test/ng/locationSpec.js @@ -1504,6 +1504,40 @@ describe('$location', function() { ); }); + it('should not rewrite when right click pressed', function() { + configureService({linkHref: '/a?b=c', html5Mode: true, supportHist: true}); + inject( + initBrowser(), + initLocation(), + function($browser) { + var rightClick; + if (document.createEvent) { + rightClick = document.createEvent('MouseEvents'); + rightClick.initMouseEvent('click', true, true, window, 1, 10, 10, 10, 10, false, + false, false, false, 2, null); + + link.dispatchEvent(rightClick); + } else if (document.createEventObject) { // for IE + rightClick = document.createEventObject(); + rightClick.type = 'click'; + rightClick.cancelBubble = true; + rightClick.detail = 1; + rightClick.screenX = 10; + rightClick.screenY = 10; + rightClick.clientX = 10; + rightClick.clientY = 10; + rightClick.ctrlKey = false; + rightClick.altKey = false; + rightClick.shiftKey = false; + rightClick.metaKey = false; + rightClick.button = 2; + link.fireEvent('onclick', rightClick); + } + expectNoRewrite($browser); + } + ); + }); + it('should not mess up hash urls when clicking on links in hashbang mode', function() { var base;