mirror of
https://github.com/Hopiu/angular.js.git
synced 2026-03-17 07:40:22 +00:00
fix($location): do not rewrite link when meta key pressed
This commit is contained in:
parent
26e8ab3693
commit
afc81b554e
2 changed files with 42 additions and 15 deletions
|
|
@ -442,7 +442,8 @@ angularServiceInject('$location', function($browser, $sniffer, $config, $documen
|
|||
// TODO(vojta): rewrite link when opening in new tab/window (in legacy browser)
|
||||
// currently we open nice url link and redirect then
|
||||
|
||||
if (uppercase(event.target.nodeName) != 'A' || event.ctrlKey || event.which == 2) return;
|
||||
if (uppercase(event.target.nodeName) != 'A' || event.ctrlKey || event.metaKey ||
|
||||
event.which == 2) return;
|
||||
|
||||
var elm = jqLite(event.target),
|
||||
href = elm.attr('href');
|
||||
|
|
|
|||
|
|
@ -584,14 +584,12 @@ describe('$location', function() {
|
|||
});
|
||||
}
|
||||
|
||||
function triggerAndExpectRewriteTo(url) {
|
||||
browserTrigger(link, 'click');
|
||||
function expectRewriteTo(url) {
|
||||
expect(lastEventPreventDefault).toBe(true);
|
||||
expect($browser.url()).toBe(url);
|
||||
}
|
||||
|
||||
function triggerAndExpectNoRewrite() {
|
||||
browserTrigger(link, 'click');
|
||||
function expectNoRewrite() {
|
||||
expect(lastEventPreventDefault).toBe(false);
|
||||
expect($browser.url()).toBe(originalBrowser);
|
||||
}
|
||||
|
|
@ -604,61 +602,89 @@ describe('$location', function() {
|
|||
|
||||
it('should rewrite rel link to new url when history enabled on new browser', function() {
|
||||
init('link?a#b', true, true);
|
||||
triggerAndExpectRewriteTo('http://host.com/base/link?a#b');
|
||||
browserTrigger(link, 'click');
|
||||
expectRewriteTo('http://host.com/base/link?a#b');
|
||||
});
|
||||
|
||||
|
||||
it('should rewrite abs link to new url when history enabled on new browser', function() {
|
||||
init('/base/link?a#b', true, true);
|
||||
triggerAndExpectRewriteTo('http://host.com/base/link?a#b');
|
||||
browserTrigger(link, 'click');
|
||||
expectRewriteTo('http://host.com/base/link?a#b');
|
||||
});
|
||||
|
||||
|
||||
it('should rewrite rel link to hashbang url when history enabled on old browser', function() {
|
||||
init('link?a#b', true, false);
|
||||
triggerAndExpectRewriteTo('http://host.com/base/index.html#!/link?a#b');
|
||||
browserTrigger(link, 'click');
|
||||
expectRewriteTo('http://host.com/base/index.html#!/link?a#b');
|
||||
});
|
||||
|
||||
|
||||
it('should rewrite abs link to hashbang url when history enabled on old browser', function() {
|
||||
init('/base/link?a#b', true, false);
|
||||
triggerAndExpectRewriteTo('http://host.com/base/index.html#!/link?a#b');
|
||||
browserTrigger(link, 'click');
|
||||
expectRewriteTo('http://host.com/base/index.html#!/link?a#b');
|
||||
});
|
||||
|
||||
|
||||
it('should not rewrite when history disabled', function() {
|
||||
init('#new', false);
|
||||
triggerAndExpectNoRewrite();
|
||||
browserTrigger(link, 'click');
|
||||
expectNoRewrite();
|
||||
});
|
||||
|
||||
|
||||
it('should not rewrite ng:ext-link', function() {
|
||||
init('#new', true, true, 'ng:ext-link');
|
||||
triggerAndExpectNoRewrite();
|
||||
browserTrigger(link, 'click');
|
||||
expectNoRewrite();
|
||||
});
|
||||
|
||||
|
||||
it('should not rewrite full url links do different domain', function() {
|
||||
init('http://www.dot.abc/a?b=c', true);
|
||||
triggerAndExpectNoRewrite();
|
||||
browserTrigger(link, 'click');
|
||||
expectNoRewrite();
|
||||
});
|
||||
|
||||
|
||||
it('should not rewrite links with target="_blank"', function() {
|
||||
init('/a?b=c', true, true, 'target="_blank"');
|
||||
triggerAndExpectNoRewrite();
|
||||
browserTrigger(link, 'click');
|
||||
expectNoRewrite();
|
||||
});
|
||||
|
||||
|
||||
it('should not rewrite links with target specified', function() {
|
||||
init('/a?b=c', true, true, 'target="some-frame"');
|
||||
triggerAndExpectNoRewrite();
|
||||
browserTrigger(link, 'click');
|
||||
expectNoRewrite();
|
||||
});
|
||||
|
||||
|
||||
it('should rewrite full url links to same domain and base path', function() {
|
||||
init('http://host.com/base/new', true);
|
||||
triggerAndExpectRewriteTo('http://host.com/base/index.html#!/new');
|
||||
browserTrigger(link, 'click');
|
||||
expectRewriteTo('http://host.com/base/index.html#!/new');
|
||||
});
|
||||
|
||||
|
||||
// don't run next tests on IE<9, as browserTrigger does not simulate pressed keys
|
||||
if (!(msie < 9)) {
|
||||
|
||||
it('should not rewrite when clicked with ctrl pressed', function() {
|
||||
init('/a?b=c', true, true);
|
||||
browserTrigger(link, 'click', ['ctrl']);
|
||||
expectNoRewrite();
|
||||
});
|
||||
|
||||
|
||||
it('should not rewrite when clicked with meta pressed', function() {
|
||||
init('/a?b=c', true, true);
|
||||
browserTrigger(link, 'click', ['meta']);
|
||||
expectNoRewrite();
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
|
|
|
|||
Loading…
Reference in a new issue