【发布时间】:2010-06-15 08:59:53
【问题描述】:
If doctype is <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
// do something
else
// do something
怎么做?
谢谢。
【问题讨论】:
If doctype is <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
// do something
else
// do something
怎么做?
谢谢。
【问题讨论】:
好的,我在 IE、Chrome、Firefox 和 Opera 中测试后回来了。 IE 将为您提供完整的文档类型,其中包含以下代码:
var doctype = document.documentElement.previousSibling.nodeValue;
// -> DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
不幸的是,这可能是不正确的,因为 Chrome、Firefox 和 Opera 返回 null 为 nodeValue。由于它们都不支持outerHTML,因此我想不出获得完整文档类型的方法,但您可以获取单个部分:
var doctype = document.documentElement.previousSibling;
console.log(doctype.systemId)
// -> http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd
console.log(doctype.publicId)
// -> -//W3C//DTD XHTML 1.0 Strict//EN
但是,这在 IE 中不起作用,但将它们解析出来并不难。您可以使用if 语句来检查nodeValue 是否不是null,然后返回检查systemId 或publicId。
用于运行测试的脚本:http://jsfiddle.net/Cwb8q/
【讨论】:
$(document).siblings(); -> ups
$(document.documentElement).siblings() 没有错误,但结果中不包含文档类型。
您可以使用 jQuery.support 对象来检查特定的浏览器功能(例如 BoxModel)并对其进行处理。
【讨论】:
document.doctype 和 document.firstChild 似乎都返回了 doctype,尽管我不知道它们的支持范围有多广。
【讨论】:
尝试使用属性“this.document.doctype” 如果未声明,则结果为空,否则,结果将是文档类型的对象。
【讨论】:
你可以试试:
var doc = $("DOCTYPE");
【讨论】:
$('DOCTYPE') 总是返回[],并且正确包含感叹号,即写$('!DOCTYPE'),会导致语法错误:Error: Syntax error, unrecognized expression: !DOCTYPE。