From 9b85757102fbd44e88d0a3909fdf8b90f191b593 Mon Sep 17 00:00:00 2001 From: Vojta Jina Date: Thu, 20 Oct 2011 08:46:09 -0700 Subject: fix($location): rewrite links with nested elements For example: inner text If you click on "text", then the span element is event.target, so we need to traverse the DOM. --- src/service/location.js | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/service/location.js b/src/service/location.js index 2ffc5587..d1d34e67 100644 --- a/src/service/location.js +++ b/src/service/location.js @@ -442,12 +442,16 @@ angularServiceInject('$location', function($browser, $sniffer, $locationConfig, // 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.metaKey || - event.which == 2) return; + if (event.ctrlKey || event.metaKey || event.which == 2) return; - var elm = jqLite(event.target), - href = elm.attr('href'); + var elm = jqLite(event.target); + // traverse the DOM up to find first A tag + while (elm.length && lowercase(elm[0].nodeName) !== 'a') { + elm = elm.parent(); + } + + var href = elm.attr('href'); if (!href || isDefined(elm.attr('ng:ext-link')) || elm.attr('target')) return; // remove same domain from full url links (IE7 always returns full hrefs) -- cgit v1.2.3