html – 如何检查DOM节点是否是表示doctype声明的节点?

html – 如何检查DOM节点是否是表示doctype声明的节点?,第1张

概述所以我们说(在IE8中)我们有一个文档. 现在通常我们可以假设document.childNodes [0]是doctype.所以 var doctype = document.childNodes [0] 现在我们如何确认而不是假设它是doctype? doctype.nodeType === Node.COMMENT_NODE;doctype.tagName === "!"; // same 所以我们说(在ie8中)我们有一个文档.

现在通常我们可以假设document.childNodes [0]是DOCTYPE.所以

var DOCTYPE = document.childNodes [0]

现在我们如何确认而不是假设它是DOCTYPE?

DOCTYPE.nodeType === Node.COMMENT_NODE;DOCTYPE.tagname === "!"; // same as a commentDOCTYPE.data.indexOf("DOCTYPE ") > -1; // same as any comment containing the word DOCTYPE.DOCTYPE === document.DOCTYPE; // false,document.DOCTYPE is undefined in ie8

除了假设之外,我怎么知道给定节点是否是DOCTYPE?

对于那些不熟悉DOM4的人,请看一下DocumentType

通过返回document.childNodes [0],DOM-shim获取ie8中的document.DOCTYPE

解决方法 我发现在ie7和ie8中,评论的.INNERHTML属性总是完整的“<! - 在这里评论 - >”对于DOCTYPE节点,它是“”.即使对于空注释,.INNERHTML也是“<!---->”

基于此,我创建了:

function isDOCTYPE(node) {    return node && (    node.nodeType === 10 || (node.nodeType === 8 && "INNERHTML" in node && node.INNERHTML === ""));}

有了测试页面:

<!-- comment1 --><!-- comment2 --><!----><!-- --><!-- <!DOCTYPE HTML> -->

通过isDOCTYPE运行DOCTYPE和注释给出:

LOG: true LOG: false LOG: false LOG: false LOG: false LOG: false

见http://jsfiddle.net/AEYt4/

总结

以上是内存溢出为你收集整理的html – 如何检查DOM节点是否是表示doctype声明的节点?全部内容,希望文章能够帮你解决html – 如何检查DOM节点是否是表示doctype声明的节点?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1134269.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存