@@ -19,6 +19,17 @@ function escape(text) {
19
19
replace ( / " / g, '"' ) ;
20
20
}
21
21
22
+ /**
23
+ * http://stackoverflow.com/questions/451486/pre-tag-loses-line-breaks-when-setting-innerhtml-in-ie
24
+ * http://stackoverflow.com/questions/195363/inserting-a-newline-into-a-pre-tag-ie-javascript
25
+ */
26
+ function setHtmlIe8SafeWay ( element , html ) {
27
+ var newElement = angular . element ( '<pre>' + html + '</pre>' ) ;
28
+
29
+ element . html ( '' ) ;
30
+ element . append ( newElement . contents ( ) ) ;
31
+ return element ;
32
+ }
22
33
23
34
24
35
directive . jsFiddle = function ( getEmbeddedTemplate , escape , script ) {
@@ -54,7 +65,7 @@ directive.jsFiddle = function(getEmbeddedTemplate, escape, script) {
54
65
55
66
fields . html += '</div>\n' ;
56
67
57
- element . html (
68
+ setHtmlIe8SafeWay ( element ,
58
69
'<form class="jsfiddle" method="post" action="http://jsfiddle.net/api/post/library/pure/" target="_blank">' +
59
70
hiddenField ( 'title' , 'AngularJS Example: ' + name ) +
60
71
hiddenField ( 'css' , '</style> <!-- Ugly Hack due to jsFiddle issue: http://goo.gl/BUfGZ --> \n' +
@@ -97,7 +108,7 @@ directive.ngSetText = ['getEmbeddedTemplate', function(getEmbeddedTemplate) {
97
108
restrict : 'CA' ,
98
109
priority : 10 ,
99
110
compile : function ( element , attr ) {
100
- element . text ( getEmbeddedTemplate ( attr . ngSetText ) ) ;
111
+ setHtmlIe8SafeWay ( element , escape ( getEmbeddedTemplate ( attr . ngSetText ) ) ) ;
101
112
}
102
113
}
103
114
} ]
@@ -109,9 +120,9 @@ directive.ngHtmlWrap = ['reindentCode', 'templateMerge', function(reindentCode,
109
120
var properties = {
110
121
head : '' ,
111
122
module : '' ,
112
- body : reindentCode ( element . text ( ) , 4 )
123
+ body : element . text ( )
113
124
} ,
114
- html = "<!doctype html>\n<html ng-app{{module}}>\n <head>\n{{head}} </head>\n <body>\n{{body}} </body>\n</html>" ;
125
+ html = "<!doctype html>\n<html ng-app{{module}}>\n <head>\n{{head:4 }} </head>\n <body>\n{{body:4 }} </body>\n</html>" ;
115
126
116
127
angular . forEach ( ( attr . ngHtmlWrap || '' ) . split ( ' ' ) , function ( dep ) {
117
128
if ( ! dep ) return ;
@@ -120,15 +131,15 @@ directive.ngHtmlWrap = ['reindentCode', 'templateMerge', function(reindentCode,
120
131
var ext = dep . split ( / \. / ) . pop ( ) ;
121
132
122
133
if ( ext == 'css' ) {
123
- properties . head += ' <link rel="stylesheet" href="' + dep + '" type="text/css">\n' ;
134
+ properties . head += '<link rel="stylesheet" href="' + dep + '" type="text/css">\n' ;
124
135
} else if ( ext == 'js' ) {
125
- properties . head += ' <script src="' + dep + '"></script>\n' ;
136
+ properties . head += '<script src="' + dep + '"></script>\n' ;
126
137
} else {
127
138
properties . module = '="' + dep + '"' ;
128
139
}
129
140
} ) ;
130
141
131
- element . text ( templateMerge ( html , properties ) ) ;
142
+ setHtmlIe8SafeWay ( element , escape ( templateMerge ( html , properties ) ) ) ;
132
143
}
133
144
}
134
145
} ] ;
@@ -139,7 +150,7 @@ directive.ngSetHtml = ['getEmbeddedTemplate', function(getEmbeddedTemplate) {
139
150
restrict : 'CA' ,
140
151
priority : 10 ,
141
152
compile : function ( element , attr ) {
142
- element . html ( getEmbeddedTemplate ( attr . ngSetHtml ) ) ;
153
+ setHtmlIe8SafeWay ( element , getEmbeddedTemplate ( attr . ngSetHtml ) ) ;
143
154
}
144
155
}
145
156
} ] ;
@@ -256,7 +267,13 @@ service.templateMerge = ['reindentCode', function(indentCode) {
256
267
257
268
service . getEmbeddedTemplate = [ 'reindentCode' , function ( reindentCode ) {
258
269
return function ( id ) {
259
- return reindentCode ( angular . element ( document . getElementById ( id ) ) . html ( ) , 0 ) ;
270
+ var element = document . getElementById ( id ) ;
271
+
272
+ if ( ! element ) {
273
+ return null ;
274
+ }
275
+
276
+ return reindentCode ( angular . element ( element ) . html ( ) , 0 ) ;
260
277
}
261
278
} ] ;
262
279
0 commit comments