我有这段代码:
<script language="javascript" type="text/jscript">
document.write("<img src='http://dm.leadgenesys.com/jpgp.lgt?en=P.........TP_Q=&ur=' + escape(document.referrer) + '' border='0' alt='no alt' />");
</script>
和...当我尝试验证它时,我收到了这个错误:
文档类型不允许元素 “img”在这里
... rer)+'“border =”0“alt =”no alt“ /&GT;');
上面提到的元素是在a中找到的 不允许的上下文。这个 可能意味着你有错误 嵌套元素 - 例如“样式” 而“身体”部分中的元素 内部“头部” - 或两个元素 重叠(不允许)。
知道如何才能使这个JavaScript符合W3c标准?
答案 0 :(得分:5)
简单:不要尝试将您的JavaScript验证为HTML。
你可以通过多种方式实现这一目标......但到目前为止最好的方法是将其移到一个单独的JS文件中,然后从短脚本中调用它
<body>
...
<script type="text/javascript" language="javascript">WriteImage();</script>
...
</body>
...或者更好的是,完全抛弃document.write()
并在加载后操纵DOM。
答案 1 :(得分:5)
使验证器静音的另一种方法......
这样说:
<script type="text/javascript">
/* <![CDATA[ */
your_javascript_here("<" + ... ;
/* ]]> */
</script>
CDATA部分应该足够用于验证器,/ *样式注释* /适用于不识别CDATA标记的旧浏览器(否则会破坏javascript)。
答案 2 :(得分:2)
您的<script>
可能包含<head>
元素,因此您实际上是在文档的头部创建<img>
,但这不起作用。您需要将脚本放在<body>
。
但是,我建议你改为add the element via the DOM,因为你不太可能遇到这些问题。
答案 3 :(得分: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评论”里面?
答案 4 :(得分:1)
这是HTML4标准的一部分。您必须转义在SCRIPT标记内找到的“&lt; /”序列。
<SCRIPT type="text/javascript">
document.write ("<EM>This will work<\/EM>")
</SCRIPT>
另一种解决方案,也许更好的方法是将JS代码移到外部文件中。
答案 5 :(得分:0)
document.write("<" + "img … /" + ">");
或者:
document.write("\x3Cimg … /\x3E");