要素属性内の ">" と "<" をエスケープしたいのですが、残念ながらそれを理解できませんでした。IE のデフォルトでは、outerHTML はアンパサンド文字をエスケープしているように見えますが、">" をエスケープしようとすると (">" を "amp+gt;" に置き換えます)、"amp+gt;" の一部であるアンパサンドをエスケープします。また逃げられる。サンプルコードは次のとおりです。
var div = '<div atr="test & and < and >"></div>';
var $el = $(div);
console.log("txt string: " + div);
console.log("$el outerHTML BEFORE escaping: " + $el[0].outerHTML);
var rgx = new RegExp(">", "g");
$el.attr("atr", $el.attr("atr").replace(rgx, ">"));
console.log("$el outerHTML AFTER escaping: " + $el[0].outerHTML);
これは、このコードからの出力です。
txt string: <div atr="test & and < and >"></div>
$el outerHTML BEFORE escaping: <div atr="test & and < and >"></div>
$el outerHTML AFTER escaping: <div atr="test & and < and &gt;"></div>
ご覧のとおり、great then escaped の一部であるアンパサンドが再びエスケープされます。基本的に私が持っている必要があるのは:
<div atr="test & and < and >"></div>
ここに何が欠けている可能性があり、これを修正する方法を教えてください。
ありがとうございました。