From bc3ff2cecd0861766a9e8606f3cc2c582d9875df Mon Sep 17 00:00:00 2001 From: Caitlin Potter Date: Wed, 18 Dec 2013 17:12:02 -0500 Subject: fix($location): parse xlink:href for SVGAElements Before this fix, the xlink:href property of an SVG element could not be parsed on click, as the property is an SVGAnimatedString rather than a DOMString. This patch parses the xlink:href's animVal into a DOMString in order to prevent an `Object # has no method 'indexOf'` exception from being thrown, and also to update the location if necessary as expected. Closes #5472 Closes #5198 Closes #5199 Closes #4098 Closes #1420 --- src/ng/location.js | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/ng') diff --git a/src/ng/location.js b/src/ng/location.js index 402db3cf..12f6c14c 100644 --- a/src/ng/location.js +++ b/src/ng/location.js @@ -629,6 +629,13 @@ function $LocationProvider(){ } var absHref = elm.prop('href'); + + if (isObject(absHref) && absHref.toString() === '[object SVGAnimatedString]') { + // SVGAnimatedString.animVal should be identical to SVGAnimatedString.baseVal, unless during + // an animation. + absHref = urlResolve(absHref.animVal).href; + } + var rewrittenUrl = $location.$$rewrite(absHref); if (absHref && !elm.attr('target') && rewrittenUrl && !event.isDefaultPrevented()) { -- cgit v1.2.3