diff options
| author | Igor Minar | 2011-04-07 14:36:41 -0700 |
|---|---|---|
| committer | Igor Minar | 2011-04-07 14:56:57 -0700 |
| commit | 0d2d7025e60095afc3497c6cd4a4af9e0cd9b90e (patch) | |
| tree | a8629b17ac0f76f59a45ef8e799ac6dfc825795d | |
| parent | d517bcad5b4db5a1a60159df537e69b70702a381 (diff) | |
| download | angular.js-0d2d7025e60095afc3497c6cd4a4af9e0cd9b90e.tar.bz2 | |
use special nodeName_ impl only for IE<9
apparently IE9 is one step closer to becoming a real browser by
treating xmlns-like ("foo:") prefixes in node names as part of the
node name.
fixes:
https://groups.google.com/forum/?lnk=srg#!topic/angular/TGdrV4GsL8U
| -rw-r--r-- | src/Angular.js | 2 | ||||
| -rw-r--r-- | test/AngularSpec.js | 21 |
2 files changed, 22 insertions, 1 deletions
diff --git a/src/Angular.js b/src/Angular.js index 2f89fbbd..512ee829 100644 --- a/src/Angular.js +++ b/src/Angular.js @@ -428,7 +428,7 @@ function HTML(html, option) { }; } -if (msie) { +if (msie < 9) { nodeName_ = function(element) { element = element.nodeName ? element : element[0]; return (element.scopeName && element.scopeName != 'HTML' ) ? uppercase(element.scopeName + ':' + element.nodeName) : element.nodeName; diff --git a/test/AngularSpec.js b/test/AngularSpec.js index 9b3357e5..444b9448 100644 --- a/test/AngularSpec.js +++ b/test/AngularSpec.js @@ -562,4 +562,25 @@ describe('angular', function(){ expect(scope.greeting).toEqual('hello world'); }); }); + + + describe('nodeName_', function() { + it('should correctly detect node name with "namespace" when xmlns is defined', function() { + var div = jqLite('<div xmlns:ngtest="http://angularjs.org/">' + + '<ngtest:foo ngtest:attr="bar"></ng:test>' + + '</div>')[0]; + expect(nodeName_(div.childNodes[0])).toBe('NGTEST:FOO'); + expect(div.childNodes[0].getAttribute('ngtest:attr')).toBe('bar'); + }); + + if (!msie || msie >= 9) { + it('should correctly detect node name with "namespace" when xmlns is NOT defined', function() { + var div = jqLite('<div xmlns:ngtest="http://angularjs.org/">' + + '<ngtest:foo ngtest:attr="bar"></ng:test>' + + '</div>')[0]; + expect(nodeName_(div.childNodes[0])).toBe('NGTEST:FOO'); + expect(div.childNodes[0].getAttribute('ngtest:attr')).toBe('bar'); + }); + } + }); }); |
