为什么 IE11 会发出以下警告:HTML1406:无效的标记开始:“<?

Why does IE11 give this warning: HTML1406: Invalid tag start: "<?"

提问人:Muleskinner 提问时间:11/22/2013 最后编辑:Ganesh JadhavMuleskinner 更新时间:2/25/2014 访问量:5928

问:

我的页面被编写并声明为 XHTML 1.0 Strict。第一行是这样的:

<?xml version="1.0" encoding="utf-8" ?>
    <!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">
            <head>

我认为这对于 XHTML 1.0 Strict 是正确的,但 IE11 仍然给出了这个警告:

HTML1406: Invalid tag start: "<?". Question marks should not start tags. File: default.aspx, Line: 1, Column: 2

有谁知道这是否是我应该担心的事情?

HTML 互联网浏览器 xhtml 文档类型 internet-explorer-11

评论

1赞 最白目 11/22/2013
嗯,您将文件声明为 xml 文件,然后声明为 HTML 文件,这有效吗?
0赞 Muleskinner 11/22/2013
根据 W3C 的说法:“并非所有 XML 文档都需要 XML 声明;但是,强烈建议XHTML文档作者在其所有文档中使用XML声明“ - 请参阅 http://www.w3.org
0赞 iddo 11/22/2013
可以,但这不是必需的。因此,我建议您删除 xml 声明。请记住,该页面是在 2002 年编写的。

答:

14赞 Alohci 11/23/2013 #1

问题在于,尽管您已经创建了一个带有 XHTML 文档类型的文件,但您已经使用媒体类型来提供它。text/html

因此,IE11(和其他浏览器)将文件视为 HTML 文件,并使用其 HTML 解析器对其进行解析。HTML 文件中的 XML 声明是无效的,这就是浏览器告诉你的。如果使用媒体类型提供文件,浏览器会将该文件视为 XHTML,并使用其 XML 解析器来解析它。然后,将根据 XML 规则正确处理 XML 声明,并且 IE11 不会向您提供该警告消息。application/xhtml+xml

这里没有真正的问题。HTML 解析器会将声明视为虚假注释,无论如何都会继续。

有关更多信息,您应该阅读将 XHTML 作为文本/html 发送被认为有害和/或 HTML 4、HTML 5、XHTML、MIME 类型 - 权威资源

0赞 Serj Sagan 2/25/2014 #2

如果你来到这里是因为你正在开发一个旧的(呃)应用程序/网站......尝试打开...这对我有用ASP.NETWeb FormsCompatibility View