mirror of
https://github.com/Hopiu/angular.js.git
synced 2026-03-17 07:40:22 +00:00
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.
This commit is contained in:
parent
dc32ea627e
commit
94dd685709
2 changed files with 11 additions and 13 deletions
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}));
|
||||
});
|
||||
|
|
|
|||
Loading…
Reference in a new issue