DOM要素にID'myElement'を入力しようとしています。私が入力しているコンテンツは、テキスト要素とHTML要素の組み合わせです。
以下は、DOM要素に入力したいコンテンツであると想定します。
var x = "<b>Success</b> is a matter of hard work &luck";
次のようにinnerHTMLを使ってみました。
document.getElementById("myElement").innerHTML=x;
その結果、私の文の最後の単語が切り落とされました。どうやら、問題は最後の単語に存在する「&」文字が原因です。'&'とinnerHTMLをいじってみましたが、以下は私の観察です。
- コンテンツの最後の単語が10文字未満で、「&」文字が含まれている場合、innerHTMLは「&」で文を切り取ります。
- この問題はFirefoxでは発生しません。
- innerTextを使用すると、最後の単語はそのままになりますが、コンテンツの一部であるすべてのHTMLタグはプレーンテキストになります。
jQueryの#htmlメソッドを使用してデータを入力してみました。
$("#myElement").html(x);
このアプローチはIEの問題を解決しますが、chromeの問題は解決しません。
すべてのブラウザで切り落とされることなく、最後の単語に「&」が含まれるHTMLコンテンツを挿入するにはどうすればよいですか?
更新:1。DOMに挿入しようとしているコンテンツをhtmlエンコードしてみました。コンテンツをエンコードすると、コンテンツの一部であるhtmlタグがプレーンな文字列になります。
上記のコンテンツの場合、結果は次のようにレンダリングされると思います。
成功は努力と幸運の問題です
しかし、レンダリングされたページで実際に得られるものをエンコードすると、
<b>Success</b> is a matter of hard work &luck