2009-09-27 3 views
5
によって引き起こされたW3検証エラーを修正するには

&がw3検証の原因となるエラーを修正する方法はありますか?問題は、if文で& &を使用する必要があり、これら2つの& &がw3検証でエラーを引き起こすことです。Javascript:&

編集: 「<」と「>」に同じ問題があります。

+2

コードを表示した方が良いでしょう。 – LiraNuna

+0

どのようなHTMLバージョンを使用していますか? – Gumbo

+0

ところで論理ANDは論理ORで表現できますが、JavaScriptファイルを使用するとA && B =!(!A ||!B) – Gumbo

答えて

18

できることがいくつかあります。

あなたはHTMLのコメントで囲みことができます。

<script type="text/javascript"> 
<!-- 

if (foo && bar) ... 

//--> 
</script> 

をあなたは、CDATAセクションで囲むことができます。

<script type="text/javascript"> 
// <![CDATA[ 

if (foo && bar) ... 

// ]]> 
</script> 

代わりに、ファイル内で含めることができます。

<script src="foobar.js" type="text/javascript"></script> 
+2

+1になります。他の2つのオプションは少し古いですが、代わりに最新のDOCTYPEを使用してください。 –

+0

HTMLコメントの開始をコメントアウトしてください。 E4Xが有効な場合( 'type'に'; e4x = 1'が含まれていれば)、コードはコメントリテラルになります。 –

+0

@TJインラインでない(つまりgooglemap v3) –

3

主要な答えは次のとおりです。JavaScriptファイルではなくHTMLファイルでJavaScriptファイルを使用し、srcはスクリプトタグのトリビュート。 (すべてのJSを1つのファイルに結合し、パフォーマンスを最小化、gzipなど)

しかし、 JavaScriptがHTMLに埋め込まれている必要があります。有効で最新のDOCTYPEを使用し、コメントタグとCDATAセクションに頼る必要はありません。

有効なHTML5の例:あなたは両方のケースでは、あなたが終了タグに注意する必要があること

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 

ノートにDOCTYPEを変更した場合も、HTML4厳格として検証します

<!DOCTYPE HTML> 
<html> 
<head> 
<meta http-equiv="Content-type" content="text/html;charset=UTF-8"> 
<title>Example</title> 
<script type='text/javascript'> 
function foo() { 
    var a = 1, b = 2; 

    if (a && b) { 
     alert("Both"); 
    } 
    if (a < b) { 
     alert("a < b"); 
    } 
    if (a > b) { 
     alert("a > b"); 
    } 
} 
</script> 
</head> 
<body> 
<p>Hi there</p> 
</body> 
</html> 

あなたのスクリプト -

これは問題の原因です:

<script type='text/javascript'> 
alert("</td>"); 
</script> 

これは、バックスラッシュ(またはあなたがアップし、別の文字列リテラルに終了タグを破ることができる)とスラッシュを巻頭で問題を解決:

<script type='text/javascript'> 
alert("<\/td>"); 
// -or- 
alert("<" + "/td>"); 
</script> 

しかし、再び、基本的な答えは:内のJavaScriptを埋め込みませんあなたがそれを避けることができるHTMLファイルは、JavaScriptファイルを使用します。

+0

-1の説明やコメントがないと、一部の.jsがクラッシュすることがありますか?ニース。 –

+0

それは正解です。 +1 –

-1

&amp;とエスケープ&&lt;<、および&gt;>

+0

これはXHTMLではうまくいきますが、HTML互換のXHTMLでは機能しません。 – Quentin

+0

David、あなたはHTMLでもテストしましたか?それはHTMLで正常に動作します。 –

+0

私はこの些細なことをテストする必要はありません。これは、HTMLとXHTMLの違いの非常に基本的な部分です。つまり、ここにテストケースがあります:http://dorward.me.uk/tmp/no-it-doesnt-work.html(これはFirefoxで予想通りエラーです。他のテストでは気にすることはできませんブラウザ)。 – Quentin

0

あなたの記述に基づいて、私はあなたがHTMLタグのイベントプロパティ(onclickなど)の中にあるスクリプトについて話していると考えています。その場合、スクリプトコードをHTMLでエンコードする必要があります。エリヤは頭の爪に当たった。

例えば:

<input type="submit" onclick="if(somevar &amp;&amp; othervar) callFunc(&quot;clicked&quot;);"> 

あなたは<script></script>ブロック内でそれをする必要はありません。

+0

ええと...プッシュダウン、理由はわかりません。誰でも標準を読んでみたいですが、HTMLとXHTMLの両方に当てはまります。同じことがアンカータグなどのURLにも当てはまります。 –