2009-03-04 7 views
1

If you set the innerHTML of a <div> to innerHTML = '<a href="Something/C%23">C#</a><br />';innerHTMLプロパティとC%23(C#の) - 実際には 'レンダリング' を取得するようでは何のFirefox

は次のとおりです。

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

ので、リンクを、これを逃れるための適切な方法は何でしょうです"Something/C%23"のままになりますか?

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

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

答えて

2

これを試してみてください:

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

は "%25" に "%" を展開し、あなたが望む結果を得ます。その後、 "%25"はパーセント文字に変換され、その後の23は再解釈されません。

+0

コメントなしのdownvoteはあまり役に立ちません。何かが間違っていると、コメントが訂正できるようになります。 – Eddie

0

パーセント自体をエスケープすると、それを持っているはずです。

innerHTML = '<a href="Something/C%2523">C#</a><br />'; 
3

これは、多くのブラウザが「優しい」URLとして「Something/C#」と「Something/C%23」へのリンクをレンダリングすることは注目に値します。 divをFirebugまたは同様のツールを使用してチェックし、実際に間違って設定されていることを確認してください。

もしそうなら、あなたは%25としてパーセント記号をエスケープする必要があります。

innerHTML = '<a href="Something/C%2523">C#</a><br />'; 
+0

+1。 Firebugについての良いアイデア。しかし、私が何が間違っているか分かっていたとしても(私はリンクをクリックすると分かっていました)。火かき棒は私が正しく修正するのを助けませんでしたか?または私は何かを逃している?ありがとう。 – BuddyJoe

+0

いいえ、Firebugはデバッグの助けです。あなたのJSが実際に文書に対して行ったことを(View Sourceはそれを反映していないので)見るのが難しいので、DOMインスペクタは非常に便利です。 Firebugは私が使用した最高のDOMインスペクタです。 –

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>') 
関連する問題