getBoundingClientRect未返回大小调整信息iOS8
getBoundingClientRect not returning sizing info iOS8
在iOS中的UIWebView
中,iframe
中有被查询的div。对于每个div,我提取属性以及div的顶部、底部、左侧、右侧、宽度和高度
<div class="x" id="1234" data-type="web"
data-href="http://x.com/foo?bar=z"></div>
JS:
var divs = iframe['contentDocument'].getElementsByClassName('x');
return [].map.call(divs, function (div) {
return _.extend(div.getBoundingClientRect(), {
id: div['id'],
href: div['dataset']['href'],
type: div['dataset']['type']
});
这在iOS 6和iOS 7中运行良好,所有数据都存在,包括getBoundingClientRect中的大小调整数据。在iOS8中,getBoundingClientRect
只返回一个空对象,但div的id和数据集字段会返回。有什么想法为什么或如何让它发挥作用吗?
我发现您不能以类似字典的方式访问返回的ClientRect
的属性:
document.querySelector("#link").getBoundingClientRect()["left"] // Does not work
document.querySelector("#link").getBoundingClientRect().left // Does work
或者,作为一个立即执行的功能:
(function() {
var element = document.querySelector('#link');
var rect = element.getBoundingClientRect();
return { left: rect.left, top: rect.top, width: rect.width, height: rect.height };
})()
这个实现在iOS 7和iOS 8中都适用。
相关文章:
- 访问布局信息是否也会导致浏览器重排
- 内部分区字体大小获胜'调整浏览器窗口大小时不会随媒体查询而更改
- 调整窗口大小时,可拖动的对象会出现在容器外部
- ExtJS——在展开/折叠时调整面板高度
- 定义完全独立的样式信息
- 使用html2canvas获取基本信息
- JS表单提交"无法使用Chrome数据保护程序加载此页面.尝试重新加载页面.调试信息:POST CISmtuK
- 从信息框调用弹出图像库
- 如何在不传递此信息的情况下查找被调用的元素
- Chrome应用程序调整窗口大小保持纵横比
- 将谷歌自动完成地址信息放在页面上,而不是表格中
- 如何自动调整标签的高度以适应内容
- 导航栏没有调整到浏览器屏幕的大小
- 调整屏幕大小后不显示子菜单
- 如何调整信息窗口的大小并点击按钮?+更改信息窗口的内容
- 如何调整信息窗口的大小
- getBoundingClientRect未返回大小调整信息iOS8
- 可以't调整嵌入地图信息窗口的谷歌电子表格的大小
- 在api中调整google earth版权信息大小
- 窗口大小调整信息在角