2012-02-20 12 views
1

一部のHTML要素のリテラルコンテンツをエンコードアンパサンドなしのリテラルコンテンツを取得しようとしています。私はこれを行う方法を見つけることができないようです。アンパサンドをエンコードせずにJavaScriptのHTML要素のリテラル値を取得する

例: 私はURLを設定した場合:アンカータグに

http://www.google.com?q=foo&bla=bar&kitties=yay 

を、そしてinnerHTMLプロパティを持つ、またはXMLSerializer.serializeToStringを(使用して再度検索してみてください)(HREFなど)URLが来ますバックとして:

http://www.google.com?q=foo&bla=bar&kitties=yay 

(最初の非コードさアンパサンドが符号化された、符号化アンパサンドが変更されていない[まだ符号化され、符号化された二重にしない])

私は、このエンコードされたバージョンがブラウザに戻ってきたことを知っています.HTMLで問題はありませんが、私はこれらのURLを見ている人には理解できません。& amp; &であり、誰がURLをコピーして貼り付けて検証しますか?私はまた、これらのURLがエンコードされたままにしておく必要があり、最後にエンコードされたURLを持っていることが多く、ダブルエンコードされていないように見えるため、URLのデコードが安全だとは思わない。私はURLが修正され、 "エンコードされていない"ので、これも間違っていると思います。 HTMLタグの部分(例えば、<a>)が必要なので、単にnodeValue/innerText/textContent/dataを取得することはできません。

どのような提案も歓迎されました。私はjsfiddleを含めることもできます申し訳ありませんが、これは明らかですが、私は立ち往生している!

+3

マーク生のHTMLとして扱うStackOverflowのを停止するコードとしてURIを。 (私は自分自身でそれを修正したいと思いますが、元の値が何であるかはわかりません) – Quentin

+0

問題を引き起こしているリンクにHTMLを含めることはできますか?また、動作しないJavascriptも含めて役立つ場合があります。 –

+0

ありがとうQuentin - 完了: – user82116

答えて

0

ブラウザに無効なHTMLを指定した場合、それを修正しようとします。 DOMをHTMLにシリアル化すると、固定HTMLが得られます。これを避ける方法はありません。

大藤、ほとんどのX-URL形式でエンコードされたデータのパーサはそう?foo=1&amp;bar=2はそうあなたがコピー/貼り付けについてあまり心配する必要はありませんfoo=1&amp=&bar=2と同じように扱われますthe recommendation to treat semi-colons as ampersandsに従います。つまり、最初にfoo=1;bar=2と書くだけで、アンパサンドをHTMLにエンコードする心配はありません。

+0

私は入力が何であるかを制御していないので、私はそれをすることができません(私がこの時点で望んでいるのと同じくらい!) - 私はあなたがHTMLを修正するだけであると言うかもしれないと心配しました。 console.xmldir(node)を使用してchromeのjsコンソールに元の入力を表示することができるので、それを得ることができると思いましたか? – user82116

1

あなたはJSでDOMでこれをやっている場合は、このような何か行うことができます:

var e = document.createElement('span'); 
e.innerHTML = 'url here'; 
return e.innerText; // This is your URL 
+0

私はHTMLタグの部分も必要としていると思いますが(残念ながら、少し残念ですが、これは更新されます)、innerTextは削除されています。しかし、ありがとう! – user82116

関連する問題