【发布时间】:2012-12-03 13:06:30
【问题描述】:
我想知道是否有一种简单的方法来检测是否存在 doctype - 最好是 HTML5 文档类型。我不想以字符串或任何东西的形式返回它(尽管我已经尝试过这里提出的类似问题,请参见下面的代码),我只想看看它是否不存在。比如,如果它不存在,调用alert,然后调用return false,或者如果它存在,调用一个接受函数。
就像我之前说的,我已经阅读了这里的其他帖子和其他论坛上的其他帖子,但似乎没有一个与我的答案相符,或者我可能对代码的解释有误,如果是,请告诉我。
我已经尝试过的代码如下:
var msg = {
noHTML5: "You're pages document type is either not defined or not compliant with HTML5."
},
node = document.doctype,
thisNodeHTML = "<!DOCTYPE " + node.name + (node.publicId ? ' PUBLIC"' + node.publicId + '"' : '') + (!node.publicId && node.systemId ? ' SYSTEM' : '') + (node.systemId ? ' "' + node.systemId + '"' : '') + ">";
if(!thisNodeHTML) {
alert(msg.noHTML5);
return false;
}
else {
// success = true;
}
编辑:
但是,我确实注意到,一旦我删除了 html 文件中的 doctype,Chrome 的错误控制台就会捕获它并显示错误。也许我的条件语句的语法不正确?
【问题讨论】:
-
Chrome 控制台中的错误显示为:
Uncaught TypeError: Cannot read property 'name' of null就在第 29 行下方 (thisNodeHTML = "<!....") -
@BradKoch - 这正是我得到我现在正在使用的代码的地方,但它以字符串的形式返回它,而不是简单地检测它的存在。
-
现在,这段代码或许可以工作了,就像我在
Edit中所说的那样,比如条件语句在语法上是错误的。
标签: javascript html parsing dom doctype