`
zhouyrt
  • 浏览: 1171933 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

getBoundingClientRect在IE9/10里的bug

 
阅读更多

getBoundingClientRect可以获得页面中某个元素的左,上,右和下分别相对浏览器视窗的位置,最早在IE中实现,后其它浏览器均已实现。

 

但它在IE9,10中有个bug,当出现垂直滚动条时,获取top总为0。其它浏览器则能正常获取。代码如下

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8"/>
        <title>IE9/10 getBoundingClientRect bug</title>
    </head>
    <body style="height:3000px">
        <p style="margin-top:400px">
        <label>Top:<input id="_bound" type="text"/></label>
        </p>
        <script>
            var el = document.getElementById('_bound')
            document.onclick = function() {
                var rect = document.documentElement.getBoundingClientRect()
                el.value = rect.top           
            }
        </script>
    </body>
</html>

 

1. 把body设的较高,以出现垂直滚动条

2. 鼠标向下拖动滚动条大概200px

3. 点击页面任意处,通过getBoundingClientRect获取input元素的top

 

Firefox/Chrome/Safari/IE11:-212~278

IE9/10:0

 

 

相关:

http://msdn.microsoft.com/en-us/library/ms536433(VS.85).aspx

http://developer.mozilla.org/en/docs/DOM:element.getBoundingClientRect

http://ejohn.org/blog/getboundingclientrect-is-awesome/

 

 

分享到:
评论

相关推荐

    js getBoundingClientRect() 来获取页面元素的位置.docx

    js getBoundingClientRect() 方法的语法为:element.getBoundingClientRect(),返回一个 TextRectangle 对象,该对象有四个整数属性(top、left、right 和 bottom),这些属性表示元素在客户端窗口中的坐标值,以...

    js中getBoundingClientRect的作用及兼容方案详解.docx

    注意对于 `clientTop` 和 `clientLeft` 在 IE6 和 IE7 中始终为 2 像素,而在其他现代浏览器中则为 0。 #### 三、浏览器兼容性问题 `getBoundingClientRect` 方法在不同浏览器中的表现存在差异: 1. **IE6 和 IE7...

    js中getBoundingClientRect的作用及兼容方案详解

    关于浏览器兼容性,`getBoundingClientRect` 方法在Internet Explorer 5以上版本就已支持,但在IE6和IE7中存在一些小问题。这两个老版本的浏览器中,`left` 和 `top` 属性会比实际值少2像素,并且不提供 `width` 和 ...

    各种常用浏览器getBoundingClientRect的解析

    例如,在IE浏览器中,如果不添加DOCTYPE声明,那么getBoundingClientRect方法将返回错误的结果,而添加DOCTYPE声明后,getBoundingClientRect方法将正确地返回元素的矩形边界信息。 在FF、Chrome、Maxthon浏览器中...

    完美解决kindeditor IE11看不到弹出框,兼容性问题

    在本文中,我们将深入探讨如何解决KindEditor在Internet Explorer 11(IE11)下遇到的弹出框显示问题,这是一个典型的浏览器兼容性问题。首先,我们需要了解问题的根源,然后逐步分析代码以找到解决方案。 ...

    js getBoundingClientRect使用方法详解.docx

    在使用 getBoundingClientRect 方法时,需要注意以下几点: 1. 该方法返回的属性值是相对于视口的,而不是相对于页面的左上角。因此,如果需要获取相对于整个网页左上角定位的属性值,需要加上当前的滚动位置。 2. ...

    vue获取元素宽、高、距离左边距离,右,上距离等还有XY坐标轴的方法

    this.$refs[‘通过设置ref获取到的dom元素’].getBoundingClientRect(); //示例: 获取元素距离顶部的距离 this.$refs.journalUpward.getBoundingClientRect().top 以上这篇vue获取元素宽、高、距离左边距离,右,上...

    js getBoundingClientRect使用方法详解

    - `getBoundingClientRect`的值会实时反映滚动操作,这意味着在用户滚动页面时,`top`和`left`的值会更新以保持相对于视口的位置。 - 要获取元素相对于整个文档的位置,需要将`top`和`left`加上当前的滚动位置(`...

    Firefox getBoxObjectFor getBoundingClientRect联系

    请使用 element.getBoundingClientRect()。 经本人测试,确实是Firefox在含flash的网页上提示,还不知道原因,也没找到解决办法。 Firefox版本:3.0.3 Flash: 10.0 html页面代码: 代码如下:&lt;html&gt; &lt;body&...

    js中getBoundingClientRect( )方法案例详解.docx

    由于不同浏览器对于滚动条处理的不同,`getBoundingClientRect()`方法在某些情况下可能需要额外的处理以确保兼容性。例如,在某些浏览器中,当页面有滚动条时,`getBoundingClientRect()`返回的位置可能会受到影响。...

    使用getBoundingClientRect方法实现简洁的sticky组件的方法

    在`handleScroll`函数中,我们可以获取到目标元素(target元素)和sticky元素的`getBoundingClientRect`对象,从中提取出需要的坐标信息。 ```javascript function handleScroll() { const targetRect = target...

    javascript getBoundingClientRect() 来获取页面元素的位置的代码[修正版]第1/2页

    `getBoundingClientRect()` 是JavaScript中一个非常实用的DOM方法,它用于获取元素在视口中的边界信息,包括元素的顶部、底部、左侧和右侧相对于视口的位置。这个方法在现代浏览器中广泛支持,包括IE5以上版本、Fire...

    原生JS获取元素的位置与尺寸实现方法

    getBoundingClientRect() //x\y:元素的左上角和父元素左上角的距离 //width/height:边框 + 内边距 + 内容框 //top:元素的上边界和父元素上边界的距离 //left:元素的左边界和父元素左边界的距离 //right:元素的右边界...

    isElementInView:getBoundingClientRect()的简单代码实现

    在JavaScript的世界里,`getBoundingClientRect()` 是一个非常实用的DOM API,它可以帮助开发者获取到一个元素在浏览器视口中的几何信息。这个API返回一个对象,其中包含了元素的top、right、bottom、left、width和...

    javascript 获取元素位置的快速方法 getBoundingClientRect()

    所以,网页元素的相对位置就是 var X= this.getBoundingClientRect().left; var Y =this.getBoundingClientRect().top; 再加上滚动距离,就可以得到绝对位置 var X= this.getBoundingClientRect().left+document....

    JavaScript Table行定位效果

    一般来说透明的属性值是"transparent",但在chrome里却是"rgba(0, 0, 0, 0)",所以用了一个属性来保存透明值: this._transparent = isChrome ? "rgba(0, 0, 0, 0)" : "transparent"; 并在GetBgColor获取背景色...

    JS获得鼠标位置(兼容多浏览器ie,firefox)

    本文将详细讲解如何在不同的浏览器环境下,包括IE和Firefox,获取鼠标的坐标位置,并提供相应的源码示例。 首先,我们需要理解在浏览器环境中,鼠标的坐标通常有两种表示方式:页面坐标和元素坐标。页面坐标是指...

Global site tag (gtag.js) - Google Analytics