diff options
| -rw-r--r-- | src/jqLite.js | 2 | ||||
| -rw-r--r-- | src/ng/location.js | 2 | ||||
| -rw-r--r-- | test/ng/locationSpec.js | 7 | 
3 files changed, 9 insertions, 2 deletions
diff --git a/src/jqLite.js b/src/jqLite.js index 0abae3d7..958242cd 100644 --- a/src/jqLite.js +++ b/src/jqLite.js @@ -560,7 +560,7 @@ function createEventHandler(element, events) {      }      event.isDefaultPrevented = function() { -      return event.defaultPrevented; +      return event.defaultPrevented || event.returnValue == false;      };      forEach(events[type || event.type], function(fn) { diff --git a/src/ng/location.js b/src/ng/location.js index 4c31d0ad..4efa019c 100644 --- a/src/ng/location.js +++ b/src/ng/location.js @@ -527,7 +527,7 @@ function $LocationProvider(){        var absHref = elm.prop('href');        var rewrittenUrl = $location.$$rewrite(absHref); -      if (absHref && !elm.attr('target') && rewrittenUrl) { +      if (absHref && !elm.attr('target') && rewrittenUrl && !event.isDefaultPrevented()) {          event.preventDefault();          if (rewrittenUrl != $browser.url()) {            // update location manually diff --git a/test/ng/locationSpec.js b/test/ng/locationSpec.js index cf7ceaf4..c4a88fd9 100644 --- a/test/ng/locationSpec.js +++ b/test/ng/locationSpec.js @@ -835,6 +835,12 @@ describe('$location', function() {            jqLite(link).attr('href', 'http://host.com/base/');            browserTrigger(link, 'click');            expectRewriteTo($browser, 'http://host.com/base/'); + +          jqLite(link). +              attr('href', 'http://host.com/base/foo'). +              bind('click', function(e) { e.preventDefault(); }); +          browserTrigger(link, 'click'); +          expect($browser.url()).toBe('http://host.com/base/');          }        );      }); @@ -1372,6 +1378,7 @@ describe('$location', function() {        expect(location.$$rewrite('http://other')).toEqual(undefined);        expect(location.$$rewrite('http://server/pre/')).toEqual('http://server/pre/');        expect(location.$$rewrite('http://server/pre/#otherPath')).toEqual('http://server/pre/#otherPath'); +      expect(location.$$rewrite('javascript:void(0)')).toEqual(undefined);      });    });  | 
