2016-10-31 10 views
2

信頼できないテキストをHTMLドキュメントに挿入するときは、エスケープする必要がある特定の特殊文字があります(例:<、&、 "など)。たとえば:<option>タグ内のテキストを正しくエスケープする方法は?

<div>Some tags are <b> and <div></div> 

は次のようになります。

<div>Some tags are &lt;b&gt; and &lt;div&gt;</div> 

(一つは& GTの必要性を議論することができます。しかし、それはここでは関係ありません。)

オプションタグの内側に素晴らしいが、何のことだ

?テキストを「< /オプション>」にしたい場合はどうすればよいですか?

これは動作しません:

<option>&lt;&sol;option&gt;</option> 

私は何を見つけることは、HTML文字エンティティ、(& LT ;, & GT;、など)がドロップされるということです。私はChromeとFirefoxの両方を試しました。これは、optionタグにネストされたタグを入れることができないという事実に関連していると私は考えています。 Googleはこれで私に失敗しました。 :(

および関連質問:上記のように<オプション>は特殊なエスケープ振る舞いを持っており、我々は<スクリプト>は独自の振る舞いを持って知っているので、特別なエスケープ振る舞いを持っているすべてのHTMLタグの完全なリストのどこかにあります。そして何そこのルールは?

感謝している。

+0

をしていますがあなたは ''のようなオプションをしようとしていますか?それは無効なHTMLです。 –

答えて

0

私が正しくあなたの質問を理解していれば、以下のスニペットに示されているように、あなたは(Firefoxの、クロム& Safariでテストした)完全に罰金<option>タグ内にHTMLエンティティをエスケープすることができます。

したがって、</option>というテキストをオプションタグ内に含めることができます。

<option></option></option> 

中央</option>が終了タグとして扱われず、むしろそれが示されているが:これは、本質的に、それが有する同じである<>文字

を表すHTMLエンティティを使用して行われますサイドノートとしてブラウザ

でその方法は、文字をエスケープするとき<option>タグを使用して唯一の制限は:before:after CSS擬似要素で産みます。 W3は、これらの擬似要素を使用して<option>タグにコンテンツを追加/追加できないことを示しています。何らかの理由で、Firefoxの48で、これはInfactは仕事

#css-option:before { 
 
    content: "any text"; 
 
}
<select> 
 
    <option>&lt;/option&gt;</option> 
 
    <option>&#60;/option&#62;</option> 
 
    <option>&lt;&sol;option&gt;</option> 
 
    <option id="css-option"></option> 
 
</select>

+1

それは私のために働いた。私は何とかこの悪を私にしている別の場所にバグがなければなりません。多分、今夜は休みを取ってよく寝るべきだということです。 :) – Dave

関連する問題