aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMisko Hevery2012-04-17 13:55:10 -0700
committerMisko Hevery2012-04-20 11:29:34 -0700
commit94dd68570952f6f31abfa351b1159afcd3588a57 (patch)
treedcc20e15f9a32f55d8b97dc67489cc6c3a116930
parentdc32ea627e38b34ecdb709fce0cf34134d12193e (diff)
downloadangular.js-94dd68570952f6f31abfa351b1159afcd3588a57.tar.bz2
fix(script): Incorrectly reading script text on ie
IE deals with script tags in special way and .text() does not work. Reading the .text property directly fixes the issue.
-rw-r--r--src/ng/directive/script.js7
-rw-r--r--test/ng/directive/scriptSpec.js17
2 files changed, 11 insertions, 13 deletions
diff --git a/src/ng/directive/script.js b/src/ng/directive/script.js
index dcbd97b1..79f8b26e 100644
--- a/src/ng/directive/script.js
+++ b/src/ng/directive/script.js
@@ -35,8 +35,11 @@ var scriptDirective = ['$templateCache', function($templateCache) {
terminal: true,
compile: function(element, attr) {
if (attr.type == 'text/ng-template') {
- var templateUrl = attr.id;
- $templateCache.put(templateUrl, element.text());
+ var templateUrl = attr.id,
+ // IE is not consistent, in scripts we have to read .text but in other nodes we have to read .textContent
+ text = element[0].text;
+
+ $templateCache.put(templateUrl, text);
}
}
};
diff --git a/test/ng/directive/scriptSpec.js b/test/ng/directive/scriptSpec.js
index 471e04ce..73128765 100644
--- a/test/ng/directive/scriptSpec.js
+++ b/test/ng/directive/scriptSpec.js
@@ -11,10 +11,6 @@ describe('scriptDirective', function() {
it('should populate $templateCache with contents of a ng-template script element', inject(
function($compile, $templateCache) {
- if (msie <=8) return;
- // in ie8 it is not possible to create a script tag with the right content.
- // it always comes up as empty. I was trying to set the text of the
- // script tag, but that did not work either, so I gave up.
$compile('<div>foo' +
'<script id="/ignore">ignore me</script>' +
'<script type="text/ng-template" id="/myTemplate.html"><x>{{y}}</x></script>' +
@@ -26,19 +22,18 @@ describe('scriptDirective', function() {
it('should not compile scripts', inject(function($compile, $templateCache, $rootScope) {
- if (msie <=8) return; // see above
-
var doc = jqLite('<div></div>');
- // jQuery is too smart and removes
- doc[0].innerHTML = '<script type="text/javascript">some {{binding}}</script>' +
- '<script type="text/ng-template" id="/some">other {{binding}}</script>';
+ // jQuery is too smart and removes script tags
+ doc[0].innerHTML = 'foo' +
+ '<script type="text/javascript">some {{binding}}</script>' +
+ '<script type="text/ng-template" id="/some">other {{binding}}</script>';
$compile(doc)($rootScope);
$rootScope.$digest();
var scripts = doc.find('script');
- expect(scripts.eq(0).text()).toBe('some {{binding}}');
- expect(scripts.eq(1).text()).toBe('other {{binding}}');
+ expect(scripts.eq(0)[0].text).toBe('some {{binding}}');
+ expect(scripts.eq(1)[0].text).toBe('other {{binding}}');
dealoc(doc);
}));
});