原因在于document.getElementById("cctv").offsetWidth
可能为IE的专用属性,在FF中获取的body宽度属性不是offsetWidth。

解决方案 »

  1.   

    document.body 的值在不同浏览器中有不同解释(实际上大多数环境是由于对 document.body 解释不同造成的,并不是由于对 offset 解释不同造成的)
      

  2.   

    IE、Opera 认为 offsetHeight = clientHeight + 滚动条 + 边框。
    NS、FF 认为 offsetHeight 是网页内容实际高度,可以小于 clientHeight。
    offsetWidth与offsetHeight一样的,只是把高度换成宽度
      

  3.   

    所以你获取body当然他们的值不一样了
      

  4.   

    再解释一个scrollHeight给你
    IE、Opera 认为 scrollHeight 是网页内容实际高度,可以小于 clientHeight。
    NS、FF 认为 scrollHeight 是网页内容高度,不过最小值是 clientHeight。
    当然scrollWidth是一样的了简单的来说呢:clientHeight(clientWidth) 就是透过浏览器看内容的这个区域高度(宽度)。
    NS、FF 认为 offsetHeight(offsetWidth) 和 scrollHeight(scrollWidth) 都是网页内容高度(宽度),只不过当网页内容高度(宽度)小于等于 clientHeight 时,scrollHeight(scrollWidth) 的值是 clientHeight(clientWidth),而 offsetHeight(offsetWidth) 可以小于 clientHeight(clientWidth)。
    IE、Opera 认为 offsetHeight(offsetWidth) 是可视区域 clientHeight(clientWidth) 滚动条加边框。scrollHeight(clientWidth) 则是网页内容实际高度(宽度)。
      

  5.   

    offsetWidth ff也是认识的,不过FF下window.innerWith
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-CN" lang="zh-CN">
    <style>
    *{margin:0;padding:0}
    </style>
    <body id="cctv">
    <a>adadeadd</a>
    </body><script type="text/javascript" defer="defer"> 
    var c=document.getElementById("cctv").offsetWidth; 
    var d = window.innerWidth;
    alert(c) ;
    alert(d); 
    </script> 
    我想楼主的问题,主要是各个浏览器对滚动条的包含关系不同引起的把,楼下继续....
      

  6.   


    -_-!!不是浏览器对滚动条的包含关系不同引起,而是body宽度和高度的值在不同浏览器中有不同解释
      

  7.   

    原因可能发生在DTD(如果你引用了DOCTYPE的话)
    document.body.offsetWidth
    会成为
    document.documentElement.offsetWidth
    具体定义内容不贴了
    body节点和documentElement是两个不同的节点,获取body的相关信息时会受到doctype对解释的不同概念。……我这话怎么听着自己都感觉绕口……-_-!
      

  8.   

    感谢chinmo的解答,受益匪浅阿,正好解决了我的困扰