From 8043784fd73a4768f4e904fd4121b21cd1fb49b4 Mon Sep 17 00:00:00 2001 From: Igor Minar Date: Thu, 14 Feb 2013 15:13:50 -0800 Subject: fix(a): workaround IE bug affecting mailto urls Apparently there is a really weird bug in IE6-8 that causes anchor textContent to be reset with href content when both contain @ symbol. Inserting a bogus comment node into all anchor elements in IE works around this browser bug. I'm fixing the issue via directive because that way we'll fix it for jQuery as well. I fixed an e2e test too because it was incorrect. Closes #1949 --- src/ng/directive/a.js | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) (limited to 'src/ng/directive/a.js') diff --git a/src/ng/directive/a.js b/src/ng/directive/a.js index 9b6c67c9..7ee8f572 100644 --- a/src/ng/directive/a.js +++ b/src/ng/directive/a.js @@ -16,10 +16,20 @@ var htmlAnchorDirective = valueFn({ restrict: 'E', compile: function(element, attr) { - // turn link into a link in IE - // but only if it doesn't have name attribute, in which case it's an anchor - if (!attr.href) { - attr.$set('href', ''); + + if (msie <= 8) { + + // turn link into a stylable link in IE + // but only if it doesn't have name attribute, in which case it's an anchor + if (!attr.href && !attr.name) { + attr.$set('href', ''); + } + + // add a comment node to anchors to workaround IE bug that causes element content to be reset + // to new attribute content if attribute is updated with value containing @ and element also + // contains value with @ + // see issue #1949 + element.append(document.createComment('IE fix')); } return function(scope, element) { -- cgit v1.2.3