主页 > 专题教程 > javascript > js基础 >
来源:自学PHP网 时间:2018-02-08 10:24 作者: 阅读:次
[导读] 根据W3C对DOM的要求,浏览器可以自行为它添加属性和方法,以增强其功能。在操作DOM的时候经常需要判断某个给定的节点是不是另外一个节点的后代节点。有两个方法可用:contains()和...
根据W3C对DOM的要求,浏览器可以自行为它添加属性和方法,以增强其功能。新增加的部分功能是为了向后兼容,而另外一些功能则是根据开发人员的反馈,这对常见问题而添加的。 从IE6开始,IE浏览器区分标准模式和混杂模式,这就需要我们在使用的时候区分浏览器处于何种模式下。IE为添加了一个名为 if(document.compatMode == "CSS1Compat"){ alert("标准模式"); }else{ alert("混杂模式"); } 在IE之后,Firefox、Chrome和Opera浏览器也都实现了这个属性。Safari浏览器从3.1版本开始实现 后来,IE8又为 if(document.compatMode > 7){ alert("IE8+ 标准模式"); } 这是因为IE8有3种不同的呈现模式,引入这个属性正是为了区分这些模式。这个属性的值如果是5,则表示混杂模式(即IE5模式),如果值为7,则表示IE7仿真模式,如果是8,则表示IE8标准模式。 我们在操作DOM的时候经常需要判断某个给定的节点是不是另外一个节点的后代节点。IE浏览器最先引入了一个 alert(document.documentElement.contains(document.body)); //true 上面的例子测试 IE,Safari3+,Opera8+和Chrome浏览器都支持 Firefox浏览器不支持
如果需要模仿 var result = document.documentElement.compareDocumentPosition(document.body); console.info("result="+result); console.info("按位与操作后的布尔值结果为:"+!!(result & 16)); 上面的代码在执行 我们可以通过浏览器的能力检测来编写一个通用的 /*********************************************************/ /* 浏览器通用contains()方法 /* 参数:refNode - 参考节点 */ /* 参数:otherNode - 要检测的节点 */ /* 返回值: refNode包含otherNode是返回true,否则返回false*/ /*********************************************************/ function contains(refNode,otherNode){ if(typeof refNode.contains == "function"){ return refNode.contains(otherNode); }else if(typeof refNode.compareDocumentPosition == "function"){ return !!(refNode.compareDocumentPosition(otherNode) & 16); }else{ var node = otherNode.parentNode; do{ if (node === refNode) { return true; }else{ node = node.parentNode; } }while(node !== null); return false; } } 这个通用 在函数体内,首先检测refNode中是否存在 |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com