现在通常我们可以假设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声明的节点?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)