• 转载:javascript 获取 浏览器body高宽等 (兼容多个浏览器:IE Firefox google apple 测试通过)


    转载网址:hi.baidu.com/qcomdd/item/99b08e7236b0e710d0dcb3a9

    在新定义出来的标准下document.documentElement.clientHeight在IE和火狐里都能获取正确值,下面一篇文章详细介绍了获取各种浏览器可见窗口大小这方面的差别:
    <script language="javascript">
    function getInfo()
    {
       var s ="";
        s += "网页可见区域宽:"+ document.body.clientWidth;
        s += "网页可见区域高:"+ document.body.clientHeight;
        s += "网页可见区域宽:"+ document.body.offsetWidth + " (包括边线和滚动条的宽)";
        s += "网页可见区域高:"+ document.body.offsetHeight + " (包括边线的宽)";
        s += "网页正文全文宽:"+ document.body.scrollWidth;
        s += "网页正文全文高:"+ document.body.scrollHeight;
        s += "网页被卷去的高(ff):"+ document.body.scrollTop;
        s += "网页被卷去的高(ie):"+ document.documentElement.scrollTop;
        s += "网页被卷去的左:"+ document.body.scrollLeft;
        s += "网页正文部分上:"+ window.screenTop;
        s += "网页正文部分左:"+ window.screenLeft;
        s += "屏幕分辨率的高:"+ window.screen.height;
        s += "屏幕分辨率的宽:"+ window.screen.width;
        s += "屏幕可用工作区高度:"+ window.screen.availHeight;
        s += "屏幕可用工作区宽度:"+ window.screen.availWidth;
        s += "你的屏幕设置是 "+ window.screen.colorDepth +" 位彩色";
        s += "你的屏幕设置 "+ window.screen.deviceXDPI +" 像素/英寸";
        alert(s);
    }
    getInfo();
    </script>

    在本地测试当中:
    在IE、FireFox、Opera下都可以使用
    document.body.clientWidth
    document.body.clientHeight
    即可获得,很简单,很方便。
    而在公司项目当中:
    Opera仍然使用
    document.body.clientWidth
    document.body.clientHeight
    可是IE和FireFox则使用
    document.documentElement.clientWidth
    document.documentElement.clientHeight

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    如果在页面中添加这行标记的话

    在IE中:
    document.body.clientWidth ==> BODY对象宽度
    document.body.clientHeight ==> BODY对象高度
    document.documentElement.clientWidth ==>可见区域宽度
    document.documentElement.clientHeight ==>可见区域高度
    在FireFox中:
    document.body.clientWidth ==> BODY对象宽度
    document.body.clientHeight ==> BODY对象高度
    document.documentElement.clientWidth ==>可见区域宽度
    document.documentElement.clientHeight ==>可见区域高度
    ?
    在Opera中:
    document.body.clientWidth ==> 可见区域宽度
    document.body.clientHeight ==> 可见区域高度
    document.documentElement.clientWidth ==>页面对象宽度(即BODY对象宽度加上Margin宽)
    document.documentElement.clientHeight ==>页面对象高度(即BODY对象高度加上Margin高)

    用 javascript 获取当页面上鼠标(光标)位置在许多情况下都会用到,比如拖放,悬停提示(tooltip)等等。当然,这里我们依然要面对浏览器的兼容问题,在不同的浏览器下,对这些相关的属性处理方式也不同,本文详细介绍了浏览器在处理这些属性时的差异和最终的解决方法。

    <script type="text/javascript">
     
    // 说明:获取鼠标位置
    // 整理:http://www.codebit.cn
    // 来源:http://www.webreference.com
    function mousePosition(ev){
    if(ev.pageX || ev.pageY){
    return {x:ev.pageX, y:ev.pageY};
    }
    return {
    x:ev.clientX + document.body.scrollLeft -document.body.clientLeft,
    y:ev.clientY + document.body.scrollTop -document.body.clientTop
    };
    }

    </script>
    上面的代码我们在  怎么用 javascript 实现拖拽中已经介绍过了,由于这个需求我们经常用到,所以我们将这段代码独立成一篇文章,供新手查询。
    使用方式:
    Code:
    document.onmousemove = mouseMove;
    function mouseMove(ev){
        ev = ev ||window.event;
        var mousePos= mousePosition(ev);
    }
    关于代码的详细说明,原文中已经介绍,现转到此处:
    我们首先要声明一个  evnet 对象,无论移动、点击、按键等,都会激活一个 evnet ,在Internet Explorer 里,  event 是全局变量,会被存储在window.event 里. 在 firefox
    或者其他浏览器,event会被相应的函数获取.当我们将mouseMove函数赋值于document.onmousemove,mouseMove会获取鼠标移动事件。
    为了让 ev 在所有浏览器下获取了 event事件,在Firefox下"||window.event"将不起作用,因为ev已经有了赋值。在 MSIE 中 ev 为空,所以得到window.event 。
    因为在这篇文章中我们需要多次获取鼠标位置,所以我们设计了一个 mousePosition 函数,它包含一个参数 : event。
    因为我们要在 MSIE 和其他浏览器下运行,Firefox 和其他浏览器用 event.pageX 和 event.pageY来表示鼠标相对于文档的位置,如果你有一个 500*500 的窗口并且你的鼠标在绝对
    中间,那么 pageX 和 pageY  的值都是250,如果你向下滚动  500, 那么 pageY 将变成 750。
    MSIE 正好相反,它使用 event.clientX 和 event.clientY表示鼠标相当于窗口的位置,而不是文档。在同样的例子中,如果你向下滚动 500,clientY 依然是250,因此,我们需要
    添加 scrollLeft 和 scrollTop 这两个相对于文档的属性。最后,MSIE 中文档并不是从 0,0开始,而是通常有一个小的边框(通常是 2 象素),边框的大小定义在 
    document.body.clientLeft 和 clientTop 中,我们也把这些加进去。
    很幸运,我们现在已经用 mousePosition 函数解决了坐标问题,不需为此费心了。
    Tag标签: IE,FF,javascript,clientWidth,clientHeight

  • 相关阅读:
    公安备案接入服务商如何填写?(网站接入信息)
    VSCode 开发Vue必备插件
    阿里云ecs从零配置centos 安装宝塔bt环境 (安装失败提示setuptools installation failed)
    hover时下划线从中间向两端渐变
    phpcms v9后台增加阅读量字段,可任意修改阅读量
    织梦登录后台变空白解决方法大全
    html鼠标滚动后导航栏吸顶效果
    关于height:100%和height:100vh的区别
    mycat
    Hash碰撞
  • 原文地址:https://www.cnblogs.com/lraa/p/2871611.html
Copyright © 2020-2023  润新知