aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMisko Hevery2010-04-19 17:02:46 -0700
committerMisko Hevery2010-04-19 17:02:46 -0700
commit259c2bba4bf1fc4f0d4cf5bcda4ffef0fb5a615a (patch)
tree6bff2acb37421eb70539001d5477fbbac77231e5
parent47ec2187776658ad9ee2a9c71a28ddb860bec43a (diff)
downloadangular.js-259c2bba4bf1fc4f0d4cf5bcda4ffef0fb5a615a.tar.bz2
last failing ie test remaining
-rw-r--r--src/Compiler.js9
-rw-r--r--src/jqLite.js5
-rw-r--r--src/markups.js6
-rw-r--r--test/BinderTest.js12
-rw-r--r--test/testabilityPatch.js6
5 files changed, 24 insertions, 14 deletions
diff --git a/src/Compiler.js b/src/Compiler.js
index a762b5fd..96df88fb 100644
--- a/src/Compiler.js
+++ b/src/Compiler.js
@@ -182,10 +182,15 @@ function eachNode(element, fn){
}
function eachAttribute(element, fn){
- var i, attrs = element[0].attributes || [], chld, attr, attrValue = {};
+ var i, attrs = element[0].attributes || [], chld, attr, name, value, attrValue = {};
for (i = 0; i < attrs.length; i++) {
attr = attrs[i];
- attrValue[attr.name] = attr.value;
+ name = attr.name;
+ value = attr.value;
+ if (msie && name == 'href') {
+ value = decodeURIComponent(element[0].getAttribute(name, 2));
+ }
+ attrValue[name] = value;
}
foreachSorted(attrValue, fn);
}
diff --git a/src/jqLite.js b/src/jqLite.js
index 53f52215..2d41a25c 100644
--- a/src/jqLite.js
+++ b/src/jqLite.js
@@ -29,7 +29,10 @@ function jqClearData(element) {
removeEventListener(element, type, fn);
});
delete jqCache[cacheId];
- delete element[jqName];
+ if (msie)
+ element[jqName] = ''; // ie does not allow deletion of attributes on elements.
+ else
+ delete element[jqName];
}
}
diff --git a/src/markups.js b/src/markups.js
index 4207d83f..e9c03217 100644
--- a/src/markups.js
+++ b/src/markups.js
@@ -43,6 +43,12 @@ angularTextMarkup('{{}}', function(text, textNode, parentElement) {
} else {
newElement = self.text(text);
}
+ if (msie && text.charAt(0) == ' ') {
+ newElement = jqLite('<span>&nbsp;</span>');
+ var nbsp = newElement.html();
+ newElement.text(text.substr(1));
+ newElement.html(nbsp + newElement.html());
+ }
cursor.after(newElement);
cursor = newElement;
});
diff --git a/test/BinderTest.js b/test/BinderTest.js
index ec0c1cb4..50e1683a 100644
--- a/test/BinderTest.js
+++ b/test/BinderTest.js
@@ -16,7 +16,9 @@ BinderTest.prototype.setUp = function(){
};
BinderTest.prototype.tearDown = function(){
- if (this.element && this.element.dealoc) this.element.dealoc();
+ if (this.element && this.element.dealoc) {
+ this.element.dealoc();
+ }
};
@@ -100,8 +102,8 @@ BinderTest.prototype.testBindingSpaceConfusesIE = function() {
'<b><span ng-bind="a"></span><span>'+nbsp+'</span><span ng-bind="b"></span></b>',
this.compileToHtml("<b>{{a}} {{b}}</b>"));
assertEquals(
- '<span ng-bind="A"></span><span>'+nbsp+'x </span><span ng-bind="B"></span><span>'+nbsp+'(</span><span ng-bind="C"></span>',
- this.compileToHtml("{{A}} x {{B}} ({{C}})"));
+ '<b><span ng-bind="A"></span><span>'+nbsp+'x </span><span ng-bind="B"></span><span>'+nbsp+'(</span><span ng-bind="C"></span>)</b>',
+ this.compileToHtml("<b>{{A}} x {{B}} ({{C}})</b>"));
};
BinderTest.prototype.testBindingOfAttributes = function() {
@@ -586,13 +588,13 @@ BinderTest.prototype.testItShouldSelectTheCorrectRadioBox = function() {
var female = jqLite(c.node[0].childNodes[0]);
var male = jqLite(c.node[0].childNodes[1]);
- trigger(female, 'click');
+ female.trigger('click');
assertEquals("female", c.scope.sex);
assertEquals(true, female[0].checked);
assertEquals(false, male[0].checked);
assertEquals("female", female.val());
- trigger(male, 'click');
+ male.trigger('click');
assertEquals("male", c.scope.sex);
assertEquals(false, female[0].checked);
assertEquals(true, male[0].checked);
diff --git a/test/testabilityPatch.js b/test/testabilityPatch.js
index 21443fa5..17341575 100644
--- a/test/testabilityPatch.js
+++ b/test/testabilityPatch.js
@@ -27,12 +27,6 @@ extend(angular, {
});
-function trigger(element, type) {
- var evnt = document.createEvent('MouseEvent');
- evnt.initMouseEvent(type, true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
- (element[0] || element).dispatchEvent(evnt);
-}
-
function sortedHtml(element) {
var html = "";
foreach(element, function toString(node) {