2014-11-08 28 views
2

我正在研究一些使用Element.getBoundingClientRect(gBCR)的代码,并结合内联样式更新来执行计算。 这不是针对一般网站,我不关心或感兴趣的是,如果有“更好的CSS方式”来完成这项任务。什么时候Element.getBoundingClientRect保证更新/准确?

中的JavaScript运行同步,并执行下列步骤:

  1. 父gBCR被取出
  2. 计算被执行和;
  3. 父的子元素有更新内联CSS样式(例如大小和边距)
  4. 父母的gBCR被重新获取

我保证所计算的客户端边界将反映父母的新边界矩形在步骤4

如果不是由规格保证,这是“保证”现代浏览器的实施?如果“基本保证”,那里有什么明显的例外?

元素是而不是被添加到DOM或从DOM中删除,并且被修改的元素是父节点的直接子元素;如果这种限制/信息是相关的。


“现代”:的UIWebView(iOS的6+),web视图(的Android 2+),和通常的镀铬/ WebKit的,FF,IE9 +嫌疑人 - 包括移动版本。

+1

我不能肯定地说,但我已经做了很多工作与gBCR,我几乎100%积极的工作,因为许多SO关于如何“手动刷新”页面样式的问题包括调用gBCR。我会得到一些链接 – Markasoftware 2014-11-08 04:00:21

+0

@Markasoftware听起来令人鼓舞!我对桌面浏览器(IE10 +等)没有任何问题,但我的经验有限,我没有在移动设备或OS X上进行测试的方法。 – user2864740 2014-11-08 04:19:13

+0

您是否有任何理由相信它未在即时的? – 2014-11-08 04:28:25

回答

1

我只是坚持在ios8.4.1/Safari8.0上的gBCR不可靠性。

在正文(gBCR为0)上滚动到底部(gBCR为负)准备一个大的div。将div的大小调整为1x1,然后window.scrollY自动变为0.gBCR也应该为0,但仍然保持负值。随着setTimeout,200毫秒后,你可以确认正确的值0.

相关问题