gpt4 book ai didi

javascript - iPhone Mobile Safari 3 上的 getBoundingClientRect 等效于什么?

转载 作者:可可西里 更新时间:2023-11-01 02:08:21 25 4
gpt4 key购买 nike

iPhone Mobile Safari 似乎缺少 element.getBoundingClientRect。 iPhone Mobile Safari 上的等效方法是什么? iPad 上有这种方法。

最佳答案

编辑 1:此代码 (webkitConvertPointFromNodeToPage) 仅适用于非常旧和过时的手机...参见 these comments .

编辑 2:我不建议您使用此代码...我记得更改它以处理带有触摸缩放的 IE10 的一些问题。我会尽量记住用修复更新代码。

是:我认为以下适用于 IE6+、FF3+、Safari 2+(桌面和移动)、Chrome(桌面和安卓)、Opera:

function offset(el) {
var convertPoint = window.webkitConvertPointFromNodeToPage;
if ('getBoundingClientRect' in el) {
var
boundingRect = el.getBoundingClientRect(),
body = document.body || document.getElementsByTagName("body")[0],
clientTop = document.documentElement.clientTop || body.clientTop || 0,
clientLeft = document.documentElement.clientLeft || body.clientLeft || 0,
scrollTop = (window.pageYOffset || document.documentElement.scrollTop || body.scrollTop),
scrollLeft = (window.pageXOffset || document.documentElement.scrollLeft || body.scrollLeft);
return {
top: boundingRect.top + scrollTop - clientTop,
left: boundingRect.left + scrollLeft - clientLeft
}
} else if (convertPoint) {
var
zeroPoint = new WebKitPoint(0, 0),
point = convertPoint(el, zeroPoint),
scale = convertPoint(document.getElementById('scalingEl'), zeroPoint);
return {
top: Math.round(point.y * -200/scale.y),
left: Math.round(point.x * -200/scale.x)
}
}
}

以下是 body 的 child :

<div id="scalingEl" style="position:absolute;top:-200px;left:-200px;visibility:hidden;"></div>

方法确实需要一些错误检查(例如元素必须在文档中)。 Scale 使它在页面缩放时起作用,但可能不是必需的(我在 Windows Safari 中测试 webkitConvertPointFromNodeToPage 时确实需要它)。

关于javascript - iPhone Mobile Safari 3 上的 getBoundingClientRect 等效于什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2792185/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com