html – 如何检查DOM节点是否是表示doctype声明的节点?
发布时间:2020-12-14 16:38:25 所属栏目:资源 来源:网络整理
导读:所以我们说(在IE8中)我们有一个文档. 现在通常我们可以假设document.childNodes [0]是doctype.所以 var doctype = document.childNodes [0] 现在我们如何确认而不是假设它是doctype? doctype.nodeType === Node.COMMENT_NODE;doctype.tagName === "!"; // s
所以我们说(在IE8中)我们有一个文档.
现在通常我们可以假设document.childNodes [0]是doctype.所以 var doctype = document.childNodes [0] 现在我们如何确认而不是假设它是doctype? doctype.nodeType === Node.COMMENT_NODE; doctype.tagName === "!"; // same as a comment doctype.data.indexOf("DOCTYPE ") > -1; // same as any comment containing the word DOCTYPE. doctype === document.doctype; // false,document.doctype is undefined in IE8 除了假设之外,我怎么知道给定节点是否是doctype? 对于那些不熟悉DOM4的人,请看一下 通过返回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/ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |