我如何检查浏览器是否支持getAttributeNode,setAttributeNode和createAttribute函数?
我需要通过JavaScript检测IE6和IE5.5之间没有Navigator User Agent(使用IEtester或IE控制台模拟器)的限制。
为什么呢?检查Modernizr浏览器支持
谢谢!
谢谢Oriol!但更具体地说,我需要这样的东西:
var support = true;
if(typeof(document.getElementsByClassName) === 'undefined'){
support = false;
}
if(support){
// IE > 8
}else{
// IE <= 8
}
但不是IE 8,而是IE 5.5。 使用getAttributeNode,setAttributeNode和createAttribute而不是document.getElementsByClassName
发现它!使用http://diveintohtml5.info/detect.html
中的Oriol答案和视频检测方法function supports() {
var Element = document.createElement('div'),
Q1 = !!Element.getAttributeNode,
Q2 = !!Element.setAttributeNode,
Q3 = !!document.createAttribute;
return Q1 && Q2 && Q3;
}
if(supports()){
// IE > 5.5
}else{
// IE <= 5.5
}
答案 0 :(得分:2)
您可以使用in
运算符检查对象是否具有某些属性:
'getAttributeNode' in myElement
&& 'setAttributeNode' in myElement
&& 'createAttribute' in document
myElement
应该是对某个元素的引用,例如document.documentElement
。
正确的方法是检入Element.prototype
和Document.prototype
,但旧的IE不会公开它们。因此,您应该检查某些情况,并假设它也适用于其他情况。
注意上面的代码只测试属性的存在。如果您想更安全,还可以使用typeof
检查它们是否是功能。