Javascript getBoundingClientRect未返回大小调整信息iOS8

Javascript getBoundingClientRect未返回大小调整信息iOS8,javascript,uiwebview,ios8,Javascript,Uiwebview,Ios8,在iOS中的UIWebView中,在iframe中有div被查询。对于每个div,我提取属性以及div的顶部、底部、左侧、右侧、宽度和高度 <div class="x" id="1234" data-type="web" data-href="http://x.com/foo?bar=z"></div> 这在iOS 6和iOS 7中运行良好,所有数据都存在,包括来自getBoundingClientRect的大小调整数据。在iOS 8中,getBounding

在iOS中的
UIWebView
中,在
iframe
中有div被查询。对于每个div,我提取属性以及div的顶部、底部、左侧、右侧、宽度和高度

<div class="x" id="1234" data-type="web"
     data-href="http://x.com/foo?bar=z"></div>

这在iOS 6和iOS 7中运行良好,所有数据都存在,包括来自getBoundingClientRect的大小调整数据。在iOS 8中,
getBoundingClientRect
只返回一个空对象,但返回div的id和dataset字段。你知道为什么或者如何让它工作吗?

我发现你不能以类似字典的方式访问返回的
ClientRect
的属性:

document.querySelector(“#link”).getBoundingClientRect()[“left”]//不起作用
document.querySelector(“#link”).getBoundingClientRect().left//可以工作
或者,作为立即执行的功能:

(函数(){
var元素=document.querySelector('#link');
var rect=element.getBoundingClientRect();
返回{left:rect.left,top:rect.top,width:rect.width,height:rect.height};
})()

这个实现在iOS 7和iOS 8中对我都适用。

我也有这个问题,我刚刚向苹果提交了一份错误报告。这在以前版本的iOS 8中起作用。@PhilippeSabourin尝试在extend中交换参数。看来是这样的。扩展({'id':div['id'],'href':div['dataset']['href'],'type:div['dataset']['type']},div.getBoundingClientRect());我没有完全使用您的代码,这对我来说也是不正确的:document.getElementsByTagName(“body”)[0]。getBoundingClientRect()您是在尝试JSON.stringify结果吗?我是,getBoundingClientRect返回的ClientRect是循环的,处理得不再好。扩展一个非循环的json对象作为一种解决方法帮助了我的情况。。。。我必须在代码中执行扩展技巧2次:JSON.stringify({bodyRect:$.extend({'bug':'Uffused'},$('frame')[0].getBoundingClientRect()),elementRect:$.extend({'bug':'Uffused'},$('DataExhibit=%d]'))[0].getBoundingClientRect());你应该把你的解决方案作为答案贴出来,我会投票表决的。谢谢
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']
});