2

これが私のコードです:

<a href="#">
    <img src="myimage.jpg" 
     onmouseover="showDescription(
          'Text', 'Text with HTML tags in them<br />More text');" 
     onmouseout="revertDescription();" 
     alt="Image description">

W3CMarkupValidatorはこれを好みません。JavaScriptコード内にHTMLタグは必要ありません。これを試みた場合に生成されるエラーメッセージは次のとおりです。

文字「<」は区切り文字の最初の文字ですが、データとして発生しました

HTMLタグを含む文字列をに渡した場合にページが混乱しないようにしながら、これを修正するにはどうすればよいdocument.getElementById('myElement').innerHTMLですか?

4

5 に答える 5

5

ドキュメント内の別の場所にある個別のタグ内に関数をラップすることができ<script>...</script>、そこでは...を使用します。

<script>
//<![CDATA[
    ...code...
//]]>
</script>

http://javascript.about.com/library/blxhtml.htmから:

この問題を解決するために、werは2つのことのいずれかを実行できます。最も簡単な方法は、特にJavascriptに1行または2行以上が含まれている場合、Javascriptをページの外部に作成し、スクリプトタグの間に何も配置せずにページの検証を停止することです。

1行か2行しかない場合は、外部スクリプトを作成する価値がない可能性があるため、スクリプトタグの間にコンテンツを残し、これを無視するようにバリデーターに指示します。これを行うには、Javascriptコードを次のようなCDATAタグ内に配置します...

于 2009-11-28T15:31:53.070 に答える
5

そこにたどり着く方法はたくさんあります。

  1. 使用&#60;または&lt;代わりに<
    使用&#62;または&gt;代わりに>
  2. 「image1」などの画像のIDを取得してから、 document.getElementById("image1").onmouseover = showDescription(
    'Text', 'Text with HTML tags in them<br />More text');

これがうまくいくことを願っています。

于 2009-11-28T15:36:15.900 に答える
1
onmouseover="showDescription('Text', 'Text with HTML tags in them<br />More text');" 

すべての属性値と同様に、、、、および属性区切り文字(ここ)をHTMLエンコードする必要が&あり<ます"。属性値内のJavaScriptであるという事実は、違いはありません。HTML属性値は、JavaScriptがそれを調べる前にデコードされます。

onmouseover="showDescription('Text', 'Text with HTML tags in them&lt;br />More text');" 

これは、HTML4でコンテンツがエスケープされていない<script>要素とは対照的です。XHTMLにはCDATA要素はありません。セクションを追加してXHTMLを同じように動作させることができますが、通常は、スクリプト要素とイベントハンドラー属性の両方で、または文字を使用しないことで問題を回避する方が簡単です。文字列リテラルでは、これを回避するために使用できる別のエスケープが利用可能です。CDATA&<![CDATA[&<

onmouseover="showDescription('Text', 'Text with HTML tags in them\x3Cbr />More text');" 
于 2009-11-28T15:37:49.237 に答える
1

<コンテンツを出力するときはby%3C>byを置き換えて%3Eunescape を使用します。

これは検証されません:

function(){
return ('<b> bold </b>');
}

これにより、同じ結果が得られ、検証されます。

function(){
return unescape('%3Cb%3E bold %3C/b%3E'); 
}
于 2012-02-07T11:01:43.453 に答える
0

これを<script...>ブロック内に配置するのはどうですか。

var myText = 'Text with HTML tags in them<br />More text';

そして後であなたのHTMLで:

<a href="#">
    <img src="myimage.jpg" 
     onmouseover="showDescription(
          'Text', myText);" 
     onmouseout="revertDescription();" 
     alt="Image description">
于 2009-11-28T15:32:21.383 に答える