diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/ngSanitize/sanitize.js | 22 |
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,"<"); - 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,"<"); + content = hiddenPre.innerText || hiddenPre.textContent; } - return parts.join(''); + return spaceBefore + content + spaceAfter; } /** |
