diff options
| author | Caitlin Potter | 2014-01-20 11:21:50 -0500 |
|---|---|---|
| committer | Caitlin Potter | 2014-01-22 14:51:47 -0500 |
| commit | e0209169bf1463465ad07484421620748a4d3908 (patch) | |
| tree | 019e3863a8ae8fca21910f0073fdd2e418c5e503 /src/ng/directive/a.js | |
| parent | b07afa0465b73c00e7f6d7a9479011360eb29b82 (diff) | |
| download | angular.js-e0209169bf1463465ad07484421620748a4d3908.tar.bz2 | |
fix(a): don't preventDefault on click when SVGAElement has an xlink:href attribute
Before this change, an SVGAElement with an xlink:href attribute and no href or name attribute which
was compiled by the angular HTML compiler would never be clickable, due to the htmlAnchorDirective
calling event.preventDefault() due to the missing href attribute.
This change corrects this behaviour by also testing the xlink:href attribute if the element in
question is determined to be an SVG anchor tag (with the href property having type SVGAnimatedString)
Closes #5896
Closes #5897
Diffstat (limited to 'src/ng/directive/a.js')
| -rw-r--r-- | src/ng/directive/a.js | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/ng/directive/a.js b/src/ng/directive/a.js index fe50a79b..9887cba5 100644 --- a/src/ng/directive/a.js +++ b/src/ng/directive/a.js @@ -32,11 +32,14 @@ var htmlAnchorDirective = valueFn({ element.append(document.createComment('IE fix')); } - if (!attr.href && !attr.name) { + if (!attr.href && !attr.xlinkHref && !attr.name) { return function(scope, element) { + // SVGAElement does not use the href attribute, but rather the 'xlinkHref' attribute. + var href = toString.call(element.prop('href')) === '[object SVGAnimatedString]' ? + 'xlink:href' : 'href'; element.on('click', function(event){ // if we have no href url, then don't navigate anywhere. - if (!element.attr('href')) { + if (!element.attr(href)) { event.preventDefault(); } }); |
