簡體   English   中英

為什么我的腳本無法通過w3c驗證?

[英]Why is my script failing w3c validation?

我有這段代碼:

<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“/>');

上面提到的元素是在不允許的上下文中找到的。 這可能意味着您有錯誤的嵌套元素 - 例如“body”部分中的“style”元素而不是“head”內部 - 或兩個重疊的元素(不允許)。

知道如何才能使這個JavaScript符合W3c標准嗎?

簡單:不要嘗試將您的JavaScript驗證為HTML。

你可以通過多種方式實現這一點......但到目前為止最好的方法是將它移到一個單獨的JS文件中,然后從短腳本中調用它

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

...或者更好的是,完全拋棄document.write()並在加載后操縱DOM。

另請參見: 不引人注目的JavaScript

另一種使驗證器靜音的方法......

這樣說:

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

CDATA部分應該足夠用於驗證器,/ *樣式注釋* /適用於不識別CDATA標記的舊瀏覽器(否則會破壞javascript)。

您可能在<head><script>元素,所以基本上您嘗試在文檔的頭部創建一個<img> ,這不起作用。 您需要將腳本放在<body>

但是,我建議你通過DOM添加元素 ,因為你不太可能遇到這些問題。

怎么樣的

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

看到“腳本”的內容在“html評論”里面?

它是HTML4標准的一部分。 您必須轉義在SCRIPT標記內找到的“</”序列。

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

另一種解決方案,可能更好,是將JS代碼移動到外部文件中。

參考

document.write("<" + "img … /" + ">");

要么:

document.write("\x3Cimg … /\x3E");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM