HTMLエンティティを含む文字列があり、それをエスケープ解除したい場合は、このソリューション(またはそのバリアント)を複数回提案します。
function htmlDecode(input){
var e = document.createElement('div');
e.innerHTML = input;
return e.childNodes.length === 0 ? "" : e.childNodes[0].nodeValue;
}
htmlDecode("<img src='myimage.jpg'>");
// returns "<img src='myimage.jpg'>"
(たとえば、この回答を参照してください:https ://stackoverflow.com/a/1912522/1199564 )
文字列に改行が含まれておらず、Internet Explorerバージョン10より前(バージョン9および8でテスト済み)で実行されていない限り、これは正常に機能します。
文字列に改行が含まれている場合、IE 8および9は、文字列を変更せずにスペース文字に置き換えます(Chrome、Safari、Firefox、およびIE 10の場合のように)。
htmlDecode("Hello\nWorld");
// returns "Hello World" on IE 8 and 9
バージョン10より前のIEで動作するソリューションの提案はありますか?