HTML1527:期望DOCTYPE。最短的有效doctype是""

时间:2014-11-11 18:03:12

标签: javascript c# html internet-explorer doctype

美好的一天,

我正在开发一个c#web应用程序,一切正常,直到我添加一个普通的JavaScript。

html代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script src="scripts/JScript.js" type="text/javascript"></script>
<asp:ContentPlaceHolder id="headContent" runat="server">
    </asp:ContentPlaceHolder>
</head> 
<body>

<asp:ContentPlaceHolder id="title" runat="server"></asp:ContentPlaceHolder>
<asp:ContentPlaceHolder id="bodyContent" runat="server"></asp:ContentPlaceHolder>
<!-- some code here -->
</body>

JScript.js是放入的JavaScript。

JavaScript代码如下:

function getCookie(catId) {
  var ebRand = Math.random() + '';
ebRand = ebRand * 1000000; 

document.write('<scr' + 'ipt src="HTTP://bs.serving-sys.com/Serving/ActivityServer.bs?cn=as&amp;ActivityID=553971&amp;rnd=' + ebRand + '"></scr' + 'ipt>');
}

单击链接按钮时将触发此JavaScript函数。

我在IE中遇到错误,但Chrome和Mozilla工作正常。

我在IE控制台中的错误是 HTML1527: DOCTYPE expected. The shortest valid doctype is "<!DOCTYPE html>".

在Google搜索后,我尝试输入

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

作为新DOCTYPE,但它也不起作用。

我试试了

<meta http-equiv="X-UA-Compatible" content="IE=edge" />

<head></head>

但我在IE中仍然会遇到同样的错误。

ContentPlaceHolder是否存在问题?

除此之外,我还去了W3C标记验证服务部门对地址进行了一些验证:

http://validator.w3.org/check?uri=HTTP%3A%2F%2Fbs.serving-sys.com%2FServing%2FActivityServer.bs%3Fcn%3Das%26amp%3BActivityID%3D553971%26amp%3Brnd%3D20079.082210606393&charset=%28detect+automatically%29&doctype=Inline&group=0

转到http://validator.w3.org/check投放<script src="HTTP://bs.serving-sys.com/Serving/ActivityServer.bs?cn=as&amp;ActivityID=553971&amp;rnd=20079.082210606393"></script> 同样。

但不明白验证结果是什么意思。

What I get from IE script console 请建议。

1 个答案:

答案 0 :(得分:1)

IE发出关于<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">警告,因为此类字符串为not a valid doctype according to HTML5。这样的警告对任何事情都没有影响。这只是HTML5传福音的一部分。

将其更改为<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">后,问题已被删除。但是您可能已经看到了使用某些具有错误doctype的缓存副本的结果。使用新文件(使用新名称)进行测试可以解决此问题。

当然,这样的代码不会验证,因为ASP标记是按字面意思理解并解释为body内容,但这是一个不同的问题。

实际行动是按照建议使用<!DOCTYPE html>。例如,如果您仍希望针对XHTML 1.0规范进行验证,则可以使用验证器的用户界面来覆盖doctype。

但这不是一个大问题;你也可以简单地忽略警告。如果您有一些功能错误,则它们是由其他内容引起的,应该单独询问,并提供足够的数据。