HTML DOCTYPE 语法错误

26

我在 Firebug 中得到以下语法错误,但我不知道是什么意思:

> syntax error [Break on this error]
> <!DOCTYPE html PUBLIC "-//W3C//DTDXHT...org/TR/xhtml1/DTD/xhtml1-strict.dtd">\n

是因为最后的 "\n" 吗?

谢谢

附:我刚刚意识到如果我移除所有脚本,就不会出现那个错误。比如说,如果我移除这些代码行,我就不会遇到问题。但是如果我再加入另一个脚本,问题又会出现,所以这并不取决于脚本本身。

<script type="text/JavaScript" src="<?php echo $base_url; ?>sites/all/themes/bluemarine/js/main.js"></script>

代码:

<?php
// $Id: page.tpl.php,v 1.28.2.1 2009/04/30 00:13:31 goba Exp $
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="<?php print $language->language ?>" xml:lang="<?php print $language->language ?>" dir="<?php print $language->dir ?>">
<head>
  <?php print $head ?>
  <title><?php print $head_title ?></title>
  <?php print $styles ?>
  <?php print $scripts ?>
  <script type="text/JavaScript" src="<?php echo $base_url; ?>sites/all/themes/bluemarine/js/main.js"></script>
  <!--<script type="text/JavaScript" src="<?php echo $base_url; ?>sites/all/themes/bluemarine/js/griddy-min.js"></script>
-->

</head>

<body>...

HTML文件的源代码是什么? - kennytm
5个回答

27

Ryan Rampersad在博客中谈到了这个问题:

这个错误来自于Firebug。Break on this error不是错误的一部分,而是在Firebug复制转储中....

syntax error [Break on this error] <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML…3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

我遇到这个错误的方式是忘记为我的script标签指定src属性值!

这里是博客文章


谢谢!问题在于我的所有脚本都有“src”。我的意思是,如果我删除<head>中的最后两行(<script>),那么我就不会遇到这个问题。但它们已经有了src属性。 - aneuryzm
是的,但它们是真正的JavaScript吗?服务器返回的“Content-Type”是什么? - Darin Dimitrov
1
这是上述博客文章的新链接 - http://blog.ryanrampersad.com/2008/09/syntax-error-break-on-this-error-doctype-html-public-w3cdtd-xhtml3orgtr-xhtml1-dtd-xhtml1-strictdtd/ - Vandesh
@DarinDimitrov 请使用新链接更新您的帖子...只有链接的回答是不是很让人喜欢呢。 - Paul Zahra
为了抛出导致错误的 src="",看起来 <?php echo $base_url; ?sites/all/themes/bluemarine/js/main.js 应该是空的。因此,尽管此答案说这是导致错误的原因,但 OP 仍然必须弄清楚它为空的原因。 - vapcguy
显示剩余3条评论

15

我怀疑您有一个指向返回HTML文档的URL的<script>(可能应该返回404响应,但没有)。


好的,你可以在代码中看到它们指向一个JS文件。并且在Firebug中找到了它(没有返回404错误)。 - aneuryzm
2
在URL末尾添加“.js”并不能使其成为JS文件。服务器(除了一些非常罕见的例外)会将HTML文档作为404错误的主体发送。有时它们配置不正确,因此404错误主体带有200状态代码。 - Quentin
那么一个JS文件是什么呢?我只是在里面写了JavaScript代码。谢谢。 - aneuryzm
1
我遇到了这个问题,因为服务器返回的是登录页面而不是 JavaScript 文件。 - Tim Büthe
我的页面底部添加了一些广告JS文件,导致出现了这个错误,感谢您的提示! - Kevin C.

2
我曾经遇到过同样的问题。对我来说,问题在于我加载了一个指向无处或更准确地说是指向我的域名根目录的脚本文件。脚本声明如下:<script src="http://mydomain/" type="text/javascript" />。发生的情况是脚本正在加载我的主页。主页的第一个字符是“<”,因为所有的HTML页面都以"<!DOCTYPE ......"开头。这是一个语法错误,所以就出现了问题。一旦我删除了<script src="http://mydomain/" type="text/javascript" />,一切都正常了。希望我能帮到你。

编辑:简而言之,请检查您Javascript链接中的src指针,确保它们指向正确的文件。

我已经花了很长时间在解决这个问题。谢谢你! 你救了我的工作 :-) - Mohit

2
在我的情况下,当我收到这样的错误时,原因是对JS文件的“未经授权访问”。 为了检测它,使用FireBug,[HTML]选项卡:尝试展开每个“script”节点。 这些节点中有一个包含了“401.html”页面内容,而不是预期的JS内容。

0

我曾经遇到过同样的问题。尝试了很多解决方案并进行了搜索,最终我找到了为什么会出现那个错误。

我之所以会出现那个错误,是因为在 script 标签的 src 属性中使用了无效路径。 就像我之前通过从 Visual Studio 的解决方案资源管理器中简单地将脚本拖放到页面上添加脚本一样,但是我却遇到了错误。 我的 script 标签中的 src 属性是src="~/js/jquery.min.js"

后来我发现该页面上没有获取到脚本。

因此,我使用了以下解决方案来在该页面上加载脚本。 script 标签中的 src 属性:src="../../js/jquery.min.js"


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接