【问题标题】:jQuery check doctypejQuery 检查文档类型
【发布时间】:2010-06-15 08:59:53
【问题描述】:
If doctype is <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    // do something
else 
    // do something

怎么做?

谢谢。

【问题讨论】:

    标签: jquery doctype


    【解决方案1】:

    好的,我在 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 返回 nullnodeValue。由于它们都不支持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,然后返回检查systemIdpublicId

    用于运行测试的脚本:http://jsfiddle.net/Cwb8q/

    【讨论】:

    • 只是为了好奇:试试$(document).siblings(); -> ups
    • @jAndy:Chrome 中我的错误。 $(document.documentElement).siblings() 没有错误,但结果中不包含文档类型。
    • 的负责人:我也收到一个错误,那是“ups”部分。要么 Resig 先生忘了检查,要么他只是认为这种方法太没用了,没有人会尝试 :)
    • @jAndy:我认为这可能是两者的结合,他可能没有想到。
    【解决方案2】:

    您可以使用 jQuery.support 对象来检查特定的浏览器功能(例如 BoxModel)并对其进行处理。

    【讨论】:

    • 检查真正的能力(而不是宣传的能力)确实是保持理智的唯一方法。
    【解决方案3】:

    document.doctypedocument.firstChild 似乎都返回了 doctype,尽管我不知道它们的支持范围有多广。

    【讨论】:

      【解决方案4】:

      尝试使用属性“this.document.doctype” 如果未声明,则结果为空,否则,结果将是文档类型的对象。

      【讨论】:

        【解决方案5】:

        你可以试试:

        var doc = $("DOCTYPE");

        【讨论】:

        • 那行不通。使用$('DOCTYPE') 总是返回[],并且正确包含感叹号,即写$('!DOCTYPE'),会导致语法错误:Error: Syntax error, unrecognized expression: !DOCTYPE
        猜你喜欢
        • 1970-01-01
        • 2011-08-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-28
        • 2011-08-02
        相关资源
        最近更新 更多