在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的大小调整数据。在iOS 8中,getBoundingClientRect
仅返回一个空对象,但返回div的id和数据集字段。任何想法为什么或如何让它工作?
答案 0 :(得分:1)
我发现您不能以类似字典的方式访问返回的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。