Skip to content
This repository was archived by the owner on Apr 12, 2024. It is now read-only.

Commit aa02534

Browse files
committed
bug(ie8 docs): docs now work on ie8
1 parent b99f65f commit aa02534

File tree

4 files changed

+32
-13
lines changed

4 files changed

+32
-13
lines changed

angularFiles.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ angularFiles = {
5959
'src/ng/directive/ngView.js',
6060
'src/ng/directive/script.js',
6161
'src/ng/directive/select.js',
62-
'src/ng/directive/style.js',
62+
'src/ng/directive/style.js'
6363
],
6464

6565
'angularSrcModules': [

docs/src/example.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ exports.Example.prototype.toHtmlTabs = function() {
116116

117117
exports.Example.prototype.toHtmlEmbed = function() {
118118
var out = [];
119-
out.push('<div class="well doc-example-live"');
119+
out.push('<div class="well doc-example-live"');
120120
out.push(' ng-embed-app="' + this.module + '"');
121121
out.push(' ng-set-html="' + this.html[0].id + '"');
122122
out.push(' ng-eval-javascript="' + ids(this.js) + '">');

src/bootstrap/bootstrap-prettify.js

+26-9
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,17 @@ function escape(text) {
1919
replace(/"/g, '&quot;');
2020
}
2121

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+
}
2233

2334

2435
directive.jsFiddle = function(getEmbeddedTemplate, escape, script) {
@@ -54,7 +65,7 @@ directive.jsFiddle = function(getEmbeddedTemplate, escape, script) {
5465

5566
fields.html += '</div>\n';
5667

57-
element.html(
68+
setHtmlIe8SafeWay(element,
5869
'<form class="jsfiddle" method="post" action="http://jsfiddle.net/api/post/library/pure/" target="_blank">' +
5970
hiddenField('title', 'AngularJS Example: ' + name) +
6071
hiddenField('css', '</style> <!-- Ugly Hack due to jsFiddle issue: http://goo.gl/BUfGZ --> \n' +
@@ -97,7 +108,7 @@ directive.ngSetText = ['getEmbeddedTemplate', function(getEmbeddedTemplate) {
97108
restrict: 'CA',
98109
priority: 10,
99110
compile: function(element, attr) {
100-
element.text(getEmbeddedTemplate(attr.ngSetText));
111+
setHtmlIe8SafeWay(element, escape(getEmbeddedTemplate(attr.ngSetText)));
101112
}
102113
}
103114
}]
@@ -109,9 +120,9 @@ directive.ngHtmlWrap = ['reindentCode', 'templateMerge', function(reindentCode,
109120
var properties = {
110121
head: '',
111122
module: '',
112-
body: reindentCode(element.text(), 4)
123+
body: element.text()
113124
},
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>";
115126

116127
angular.forEach((attr.ngHtmlWrap || '').split(' '), function(dep) {
117128
if (!dep) return;
@@ -120,15 +131,15 @@ directive.ngHtmlWrap = ['reindentCode', 'templateMerge', function(reindentCode,
120131
var ext = dep.split(/\./).pop();
121132

122133
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';
124135
} else if(ext == 'js') {
125-
properties.head += ' <script src="' + dep + '"></script>\n';
136+
properties.head += '<script src="' + dep + '"></script>\n';
126137
} else {
127138
properties.module = '="' + dep + '"';
128139
}
129140
});
130141

131-
element.text(templateMerge(html, properties));
142+
setHtmlIe8SafeWay(element, escape(templateMerge(html, properties)));
132143
}
133144
}
134145
}];
@@ -139,7 +150,7 @@ directive.ngSetHtml = ['getEmbeddedTemplate', function(getEmbeddedTemplate) {
139150
restrict: 'CA',
140151
priority: 10,
141152
compile: function(element, attr) {
142-
element.html(getEmbeddedTemplate(attr.ngSetHtml));
153+
setHtmlIe8SafeWay(element, getEmbeddedTemplate(attr.ngSetHtml));
143154
}
144155
}
145156
}];
@@ -256,7 +267,13 @@ service.templateMerge = ['reindentCode', function(indentCode) {
256267

257268
service.getEmbeddedTemplate = ['reindentCode', function(reindentCode) {
258269
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);
260277
}
261278
}];
262279

src/bootstrap/google-prettify/prettify.js

+4-2
Original file line numberDiff line numberDiff line change
@@ -1350,11 +1350,13 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|[!=]=?=?|\\#|%=?|&&?=?|\\(|\\*=?|[
13501350
* or the 1-indexed number of the first line in sourceCodeHtml.
13511351
*/
13521352
function prettyPrintOne(sourceCodeHtml, opt_langExtension, opt_numberLines) {
1353-
var container = document.createElement('pre');
1353+
// PATCHED: http://code.google.com/p/google-code-prettify/issues/detail?id=213
1354+
var container = document.createElement('div');
13541355
// This could cause images to load and onload listeners to fire.
13551356
// E.g. <img onerror="alert(1337)" src="nosuchimage.png">.
13561357
// We assume that the inner HTML is from a trusted source.
1357-
container.innerHTML = sourceCodeHtml;
1358+
container.innerHTML = '<pre>' + sourceCodeHtml + '</pre>';
1359+
container = container.firstChild;
13581360
if (opt_numberLines) {
13591361
numberLines(container, opt_numberLines, true);
13601362
}

0 commit comments

Comments
 (0)