aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/ngSanitize/sanitize.js22
1 files changed, 12 insertions, 10 deletions
diff --git a/src/ngSanitize/sanitize.js b/src/ngSanitize/sanitize.js
index 5d378b02..e669e77a 100644
--- a/src/ngSanitize/sanitize.js
+++ b/src/ngSanitize/sanitize.js
@@ -360,25 +360,27 @@ function htmlParser( html, handler ) {
}
}
+var hiddenPre=document.createElement("pre");
+var spaceRe = /^(\s*)([\s\S]*?)(\s*)$/;
/**
* decodes all entities into regular string
* @param value
* @returns {string} A string with decoded entities.
*/
-var hiddenPre=document.createElement("pre");
function decodeEntities(value) {
- if (!value) {
- return '';
- }
+ if (!value) { return ''; }
+
// Note: IE8 does not preserve spaces at the start/end of innerHTML
- var spaceRe = /^(\s*)([\s\S]*?)(\s*)$/;
+ // so we must capture them and reattach them afterward
var parts = spaceRe.exec(value);
- parts[0] = '';
- if (parts[2]) {
- hiddenPre.innerHTML=parts[2].replace(/</g,"&lt;");
- parts[2] = hiddenPre.innerText || hiddenPre.textContent;
+ var spaceBefore = parts[1];
+ var spaceAfter = parts[3];
+ var content = parts[2];
+ if (content) {
+ hiddenPre.innerHTML=content.replace(/</g,"&lt;");
+ content = hiddenPre.innerText || hiddenPre.textContent;
}
- return parts.join('');
+ return spaceBefore + content + spaceAfter;
}
/**