为什么我的脚本无法通过w3c验证?

And*_*ndy 2 javascript xhtml 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>
Run Code Online (Sandbox Code Playgroud)

并且......当我尝试验证它时,我收到了这个错误:

文档类型不允许元素"img"在这里

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

上面提到的元素是在不允许的上下文中找到的.这可能意味着您有错误的嵌套元素 - 例如"body"部分中的"style"元素而不是"head"内部 - 或者两个重叠的元素(不允许).

知道如何才能使这个JavaScript符合W3c标准吗?

Sho*_*og9 5

简单:不要尝试将您的JavaScript验证为HTML.

你可以通过多种方式实现这一点......但到目前为止最好的方法是将它移到一个单独的JS文件中,然后从短脚本中调用它

<body>
...
<script type="text/javascript" language="javascript">WriteImage();</script>
...
</body>
Run Code Online (Sandbox Code Playgroud)

......或者更好的是,document.write()完全抛弃并在加载后操纵DOM.

另请参见:不引人注目的JavaScript


Chr*_*heD 5

另一种使验证器静音的方法......

这样说:

<script type="text/javascript">
/* <![CDATA[ */
your_javascript_here("<" + ... ;
/* ]]> */
</script> 
Run Code Online (Sandbox Code Playgroud)

CDATA部分应该足够用于验证器,/*样式注释*/适用于不识别CDATA标记的旧浏览器(否则会破坏javascript).

  • CDATA部分仅在将文档解析为XML(使用application/xhtml + xml发送)时才起作用 (2认同)