0

HTML のほぼすべてのタグで、<(開始タグ) や&(文字エスケープ) などの文字をエスケープする必要があります。

ただし、<script>タグ内ではこれは適用されないようです! たとえば、HTMLで文字を明確に定義し、jQueryを使用してそれらを取得することもできますvar my_unescaped_text = $('script[type="text/mytexttype"]');

これを行う他のタグはありますか?JavaScriptを使用せずに、この種のものを<pre>タグで表示できるようにする方法はありますか? (ええ、私は知っています、それは間違いなく難しい注文のように聞こえます...)

<input>または<textarea>タグはどうですか?これらの文字をテキスト入力フィールドに確実に書き込むことができ、それ表示され、スタイルを設定できます (これは、私のおそらく不明確な目標を満たしています)。他に何かありますか?私が表示しようとしているテキスト (JavaScript 処理前) は Markdown であり、 aは<pre>おそらく.<textarea readonly="readOnly"><pre>

4

2 に答える 2

0

任意のテキストを HTML に埋め込む場合は、必ずエスケープする必要があります。

ただし、タグの内容には特別な規則が適用され、特定の条件下でエスケープされていない が許可されます。つまり、 の一部ではないということです。したがって、JavaScript での の正しいエンコーディングは.<script>< </script>"<""\u003c"

セキュリティ上の理由から、そもそもインライン JavaScript を使用しないでください。代わりにdata-attributesを使用してください。

于 2012-07-14T07:33:05.080 に答える
0

エスケープ ルールは HTML のバージョンによって異なります。XHTML には独自のルールがあります。使用する HTML のバージョンを決定し、優れたチュートリアルやリファレンスからそのルールを学びます。

詳細な質問について:

  1. scriptこの問題で同様の他の要素はstyle. xmpHTML マークアップをコンテンツとしてそのまま表示するために使用できる、非標準ですが十分にサポートされている要素もあります。
  2. いいえ、例外 (適用される場合) が適用されるようにルールを変更することはできませんpre
  3. inputandtextarea要素は、この点で特別ではありません。属性値でエスケープする必要がない<input value="a<b">ため、(XHTML を除いて) 有効なのようなテストに惑わされた可能性があります。または、名前文字が後に続かないため、許可されている (XHTML を除く) の<ようなテストによって。<input value="&">&

マークアップ (Markdown を含む) を表示するには、通常どおり、コンテンツ内の<とをエスケープすることをお勧めします。&フォーマットやロジックなど、他の理由でマークアップを平手打ちcodeしたり、マークアップしたりすることはできますpreが、HTML の解析には影響しないか、エスケープする必要があります。前述のように、 もありますが、要素内のマークアップが認識されないxmpようpreに、終了タグを除いてすべてのコンテンツをテキストとして扱います</xmp>。しかし、同僚、上司、または教師は、それを使用することであなたを非難するかもしれません.

于 2012-07-14T08:26:01.433 に答える