私は奇妙な問題を抱えています:
データベースには、リテラルのアンパサンドltセミコロンがあります。
<div
hTMLのtextareaタグに出力されると、ページのソースコードに>
なので >
。
このデコードを停止するにはどうすればよいですか?
別のページからDBコンテンツを提供し、Javascript(jQuery)Ajax-callを使用してそれをテキストエリアに配置できます。
request = $.ajax
({
type: "GET",
url: "url-with-the-troubled-content.php",
success: function(data)
{
document.getElementById('id-of-text-area').value = data;
}
});
で説明
http://www.endtask.net/how-to-prevent-a-textarea-element-from-decoding-html-entities/
私は同じ問題を抱えていて、テキスト領域に入れる前に、データベースから表示するためにテキストを2つ置き換えました。
myString = Replace(myString, "&", "&")
myString = Replace(myString, "<", "<")
N:o 1を置き換えて、textareaをだましてコードを表示します。 n:o 2を置き換える:この置き換えがないと、textarea内に「」という単語を表示できません(textareaタグが終了します)。
(上記のASP/VBScriptコード、選択した言語の置換メソッドに変換)
これがブラウザに表示されることを確認する必要があります:
<textarea name="somename">&lt;div</textarea>
基本的に、これは&
の<
を&
にHTMLエンコードする必要があることを意味します。その方法は、使用しているテクノロジーによって異なります。
[〜#〜] update [〜#〜]:このように考えてください。 display<div>
をテキストエリア内にしたい場合は、<>
をエンコードする必要があります。それ以外の場合は<div>
は、ブラウザに対する通常のHTML要素です。
<textarea name="somename"><div></textarea>
これを言っても、display<div>
をtextarea内にしたい場合は、&
を再度エンコードする必要があります。ブラウザは、HTMLをレンダリングするときにHTMLエンティティをデコードします。データベースとは何の関係もありません。
ブラウザーでの読み取りと操作の代替ソリューションを見つけました。jQueryを使用して要素のtext()を読み取るだけで、表示文字として文字が返され、html()を介してプロパティを使用してtextareaからdivのinnerHTMLに書き込むことができます...