support这个对象的属性都是布尔值
都是在一些代码中做一些判断  
我不知道这些到底是判断什么用的
大侠们指教下吧  顺便给点文档研究研究那更好了
var div = document.createElement("div") div.style.display = "none";
div.innerHTML = '   <link/><table></table><a href="/a" style="color:red;float:left;opacity:.5;">a</a><select><option>text</option></select><object><param/></object>';
var a = div.getElementsByTagName("a")[0];
var support= {
// IE strips leading whitespace when .innerHTML is used
leadingWhitespace: div.firstChild.nodeType == 3,

// Make sure that tbody elements aren't automatically inserted
// IE will insert them into empty tables
tbody: !div.getElementsByTagName("tbody").length,

// Make sure that you can get all elements in an <object> element
// IE 7 always returns no results
objectAll: !!div.getElementsByTagName("object")[0].getElementsByTagName("*").length,

// Make sure that link elements get serialized correctly by innerHTML
// This requires a wrapper element in IE
htmlSerialize: !!div.getElementsByTagName("link").length,

// Get the style information from getAttribute
// (IE uses .cssText insted)
style: /red/.test( a.getAttribute("style") )
}

解决方案 »

  1.   

    就把这个布尔值看成代码就行了,不至于吧比如if(!support.leadingWhitespace){alert("执行了")}
      

  2.   

    顶一下to theforever
    问不问在我     你管不着
    jq都有注释  难道英文好的就看得懂jq  搞笑吧   
      

  3.   


    var support= {
            // IE strips leading whitespace when .innerHTML is used
            leadingWhitespace: div.firstChild.nodeType == 3,
            
            // Make sure that tbody elements aren't automatically inserted
            // IE will insert them into empty tables
            tbody: !div.getElementsByTagName("tbody").length,
            
            // Make sure that you can get all elements in an <object> element
            // IE 7 always returns no results
            objectAll: !!div.getElementsByTagName("object")[0].getElementsByTagName("*").length,        
            
            // Make sure that link elements get serialized correctly by innerHTML
            // This requires a wrapper element in IE
            htmlSerialize: !!div.getElementsByTagName("link").length,
        
            // Get the style information from getAttribute
            // (IE uses .cssText insted)
            style: /red/.test( a.getAttribute("style") )    
        }
    这个东西没有什么说的,你放在ie和ff中运行就可以看到不同的效果。
    你在ie和方法中,分别弹出alert(support.leadingWhitespace+ "-" + support.htmlSerialize+ "-" + support.style);
    你就知道了。
    alert(!undefined);
    alert(!!undefined);
    上面那个对象中的值就和这2个alert的相同。就是如果这个得到的undefined的话
    那么!undefined=false,!!undefined=true
      

  4.   

    leadingWhitespace: div.firstChild.nodeType == 3,正如名字一样,表示是不是以空白开头
    div.firstChild取第一个子结点。空白其实也算是结点的,所以用nodeType来判断,如果是3,那就是空白结点。更多nodeType可以google一下javascript nodeType
    tbody: !div.getElementsByTagName("tbody").length,
    这个已经注释得很清楚了,IE会自动把给table里面加上tbody,其他浏览器不会。这个属性最后会返回div里面是否有tbody(注意非0值可以代表true,0可以代表false)
    objectAll: !!div.getElementsByTagName("object")[0].getElementsByTagName("*").length,
    确保你是否可以从object标签里面取出元素来(IE7是取不到的,所以返回null,null也可以代表false,所以!!之后变成false而不再是null。而其他浏览器在!!之后没有任何变化)
    htmlSerialize: !!div.getElementsByTagName("link").length,这个不是十分清楚,大概是说IE在处理link标签的时候会有些问题,其他浏览器不会。测试了一下,IE7、8里面结过上述步骤之后,div的innerHTML会变成
    <TBODY></TBODY></TABLE><A style="FLOAT: left; COLOR: red; opacity: .5" href="about:/a">a</A><SELECT><OPTION selected>text</OPTION></SELECT>
    <OBJECT></OBJECT>可见Link确实是没了。
    style: /red/.test( a.getAttribute("style") )
    由于前面已经在DIV的style里面设置了red,所以此处取出来看style里面是不是确实有red,可以确认浏览器是不是能从getAttribute("style")里面取到东西。这个我试了一下,IE7、8和其他浏览器似乎都没有问题,大概是IE6会出问题。没有环境没法试了。总结一下,这里之所有用support对象来表示不同的功能支持情况,是有好处的。现在虽然可以简单地定义诸如isIE7/isIE8/isFF...之类的属性,但是难保将来的状况。如果将来出了一种浏览器,它一部分像IE,一部分像FF,那怎么办呢?你的脚本就肯定要出问题了。所以通过这种方式将浏览器的支持状况细化下来,判断是否支持某个功能而不是某个浏览器,来决定是不是使用某个功能,这样可以更确切地控制浏览器兼容性。
      

  5.   

    恩   说的在理.........http://lifesinger.org/blog/2009/01/browser-sniffing-vs-feature-detect/