1

If you set the innerHTML of a <div> to innerHTML = '<a href="Something/C%23">C#</a><br />';

実際に「レンダリング」されるように見えるのは次のとおりです。

<div>
<a href="Something/C#">C#</a><br />
</div> 

リンクが "Something/C%23" のままになるように、これをエスケープする適切な方法は何ですか?

更新:
ここで奇妙なことに気づきました。関数を使用してリンクを構築する場合。余分な %25 エスケープは必要ありません。変。
元。

function buildLink(tg, nm) {
  return '<a href="Something/' + tg + '">' + nm + '</a><br />';
}
4

4 に答える 4

3

多くのブラウザは、「 」へのリンクを「フレンドリーな」URLSomething/C%23として「 」としてレンダリングすることに注意してください。Firebug または同様のツールを使用して、実際に正しく設定されていないことを確認してくださいSomething/C#div

その場合、パーセント記号を%25次のようにエスケープする必要があります。

innerHTML = '<a href="Something/C%2523">C#</a><br />';
于 2009-03-04T23:07:22.663 に答える
2

これを試して:

<a href="Something/C%2523">C#</a><br />

%」を「%25」に展開すると、必要なものが得られます。次に、" %25" はパーセント文字に変換され、その後23は再解釈されません。

于 2009-03-04T23:05:40.610 に答える
0

パーセント自体をエスケープすると、それが必要になります。

innerHTML = '<a href="Something/C%2523">C#</a><br />';
于 2009-03-04T23:05:59.890 に答える
0

実際に「レンダリング」されるように見えるのは次のとおりです。

<a href="Something/C#">C#</a><br />

いいえ。リンクの上にカーソルを置くと、Firefox のステータス バーに、リンクが「C#」に移動することが示されますが、それは嘘です。実際にリンクをクリックすると、「C%23」になります (アドレス バーに表示されます)。

リンクが "Something/C%23" のままになるように、これをエスケープする適切な方法は何ですか?

あなたは初めてそれを正しくしました。"Something/C%2523" がエンコードされすぎています。

ここでちょっと変なことに気がつきました。関数を使用してリンクを構築する場合。余分な %25 エスケープは必要ありません。

関数に参加するかどうかは影響しません。テスト メカニズムとして、アドレス バーを使用して javascript: URL を入力している場合に、影響があり、混乱を招く可能性がありますjavascript: URL は依然として URL であり、JS インタープリターがコードを確認する前に、% エンコードが元に戻されます。JS 文字列リテラルのエスケープを使用した場合、この問題は発生しません。

javascript:alert(document.body.innerHTML='<a href="Something/C\x2523">C#</a>')
于 2009-03-05T01:06:43.470 に答える