【问题标题】:HTML1527: DOCTYPE expected. The shortest valid doctype is "<!DOCTYPE html>"HTML1527:需要 DOCTYPE。最短的有效文档类型是“<!DOCTYPE html>”
【发布时间】:2015-01-08 09:16:54
【问题描述】:

早安,

我正在开发一个 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 "&lt;!DOCTYPE html&gt;".

在谷歌搜索后,我尝试输入

<!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" />

&lt;head&gt;&lt;/head&gt;

但我仍然在 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输入&lt;script src="HTTP://bs.serving-sys.com/Serving/ActivityServer.bs?cn=as&amp;amp;ActivityID=553971&amp;amp;rnd=20079.082210606393"&gt;&lt;/script&gt; 也是。

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

请多多指教。

【问题讨论】:

  • 您在哪个 IE 版本中遇到该错误?你也可以试试 html 验证器:validator.w3.org.
  • IE 10. 在网站上检查什么?
  • 加载您的页面,查看页面源代码,复制源代码并将其粘贴到直接输入选项卡中并点击检查。它会尝试验证您的 html 结构等。
  • 嗨 Benny Lin,当我查看页面源代码时,我只看到 &lt;script src="HTTP://bs.serving-sys.com/Serving/ActivityServer.bs?cn=as&amp;amp;ActivityID=553971&amp;amp;rnd=20079.082210606393"&gt;&lt;/script&gt; 所以,当我复制过来时,验证出错。这是什么意思?
  • 这意味着在初始页面加载后调用 document.write() 将原始文档吹走。不知道 ActivityServer.bs 应该做什么,所以不能告诉它应该发生与否。

标签: javascript c# html internet-explorer doctype


【解决方案1】:

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

在您将其更改为&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt; 后,此问题已消除。但是您可能看到了使用某些文档类型错误的缓存副本的结果。使用新文件(使用新名称)进行测试应该可以解决此问题。

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

实际的做法是按照建议使用&lt;!DOCTYPE html&gt;。例如,如果您仍希望根据 XHTML 1.0 规范进行验证,您可以使用验证器的用户界面来覆盖文档类型。

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

【讨论】:

  • 嗨 Jukka,我已经清除了缓存,删除了历史记录,但仍然出现同样的错误。在我的页面源中,我仍然可以看到我的DOCTYPE 已经更改为Strict。但是,当我OnClick(在母版页(site.master)中)时,我仍然遇到同样的错误。遇到此错误时,整个页面将存储。 ContentPlaceHolder 有什么问题吗?我的问题中的 html 代码在母版页上,whish 是Site.master,但我在home.aspx 页面上遇到的错误如下:HTML1527:DOCTYPE 预期。最短的有效文档类型是“”。 Home.aspx,第 1 行字符 1
  • @PanadolChong,如果点击某物时出现消息,那么执行什么代码至关重要。您需要提供重现问题所需的 实际 HTML 和 JavaScript 代码(如果与消除警告相关)。
  • 抱歉不明白你的意思。你要我提供完整的源代码吗?还是?
  • 您需要提供实际重现问题的代码,最好是最小的情况(仍然会产生问题的最短和最简单的代码)。
  • 很抱歉,仍然没有可测试的案例。根本不清楚你在问什么;这个问题太模糊了,没有集中在一个明显的问题上。目前尚不清楚您为什么担心 IE 的警告。并且您已经向 HTML 验证器提交了一段 JavaScript 代码;响应意味着没有提交任何 HTML。
猜你喜欢
  • 2011-09-13
  • 1970-01-01
  • 2011-06-11
  • 2022-07-06
  • 1970-01-01
  • 2011-03-14
  • 1970-01-01
  • 2012-02-18
  • 2011-12-11
相关资源
最近更新 更多