2

私はこのコードを持っています:

<script language="javascript" type="text/jscript">
  document.write("<img src='http://dm.leadgenesys.com/jpgp.lgt?en=P.........TP_Q=&amp;ur=' + escape(document.referrer) + ''  border='0' alt='no alt' />");
</script>

そして...それを検証しようとすると、次のエラーが発生します:

ドキュメントタイプでは、ここで要素「img」を使用できません

…rer)+'"border =" 0 "alt =" no alt "/>');

上記の名前の要素は、許可されていないコンテキストで見つかりました。これは、誤ってネストされた要素(「head」の内側ではなく、「body」セクションの「style」要素など)または重複する2つの要素(許可されていない)があることを意味します。

このJavaScriptw3cに準拠させるために私ができることはありますか?

4

6 に答える 6

5

シンプル:JavaScriptをHTMLとして検証しようとしないでください。

これはさまざまな方法で実行できます...しかし、これまでのところ最善の方法は、別のJSファイルに移動してから、短いスクリプトから呼び出すことです。

<body>
...
<script type="text/javascript" language="javascript">WriteImage();</script>
...
</body>

...またはさらに良いdocument.write()ことに、DOMを完全に破棄して、ロード後にDOMを操作します。

参照:控えめなJavaScript

于 2009-06-04T22:06:08.797 に答える
5

バリデーターを沈黙させる別の方法...

このように置きます:

<script type="text/javascript">
/* <![CDATA[ */
your_javascript_here("<" + ... ;
/* ]]> */
</script> 

バリデーターにはCDATA部分で十分です。/*スタイルコメント*/は、CDATAタグを認識しない古いブラウザー用です(そうでない場合はJavaScriptが壊れます)。

于 2009-06-04T22:14:09.263 に答える
2

あなたはおそらくあなたの<script>中にあなたの要素を持っている<head>ので、本質的にあなたはあなたの文書の頭にを作成しようとしていますが<img>、それは機能しません。スクリプトをに配置する必要があります<body>

ただし、この種の問題が発生する可能性が低くなるため、代わりにDOMを介して要素を追加することをお勧めします。

于 2009-06-04T22:04:41.280 に答える
2

どのように

<script>
<!--
var i = null;
if ((i/0) == 12)
  alert("whooo! pack your things, as it's starting to rain cats and dogs!");
--><script>

「スクリプト」の内容が「htmlコメント」内にあることを確認しますか?

于 2009-06-04T22:14:48.980 に答える
1

これはHTML4標準の一部です。SCRIPTタグ内にある「</」シーケンスをエスケープする必要があります。

<SCRIPT type="text/javascript">
  document.write ("<EM>This will work<\/EM>")
</SCRIPT>

別の解決策、そしておそらくより良いのは、JSコードを外部ファイルに移動することです。

参照

于 2009-06-04T22:11:44.213 に答える
0
document.write("<" + "img … /" + ">");

または:

document.write("\x3Cimg … /\x3E");
于 2009-06-04T22:17:24.297 に答える