如何(在javascript中)找到当前;卷轴;移动safari/iphone中的偏移量

如何(在javascript中)找到当前;卷轴;移动safari/iphone中的偏移量,javascript,iphone,webkit,mobile-safari,Javascript,Iphone,Webkit,Mobile Safari,我想知道iphone上mobile safari中用户在视口中“滚动”的x/y偏移量 换句话说,如果我(通过javascript)重新加载了当前页面,我希望找到需要传递到window.scrollTo(…)中的值,以便按当前状态重新定位文档/视口 window.pageXOffset始终报告0 jquery的$('body').scrollTop()始终报告0 事件有一个pageX,但是如果你的手势是向上/向下“轻弹”页面,那么这不能解释释放手指后发生的页面滚动。也就是说,当手指离开屏幕时,它会

我想知道iphone上mobile safari中用户在视口中“滚动”的x/y偏移量

换句话说,如果我(通过javascript)重新加载了当前页面,我希望找到需要传递到window.scrollTo(…)中的值,以便按当前状态重新定位文档/视口

window.pageXOffset始终报告0

jquery的$('body').scrollTop()始终报告0

事件有一个pageX,但是如果你的手势是向上/向下“轻弹”页面,那么这不能解释释放手指后发生的页面滚动。也就是说,当手指离开屏幕时,它会给我一个点,但这并不总是匹配页面在完成滚动后的位置


有什么建议吗?

您尝试过纯js方式吗

document.body.scrollTop

window.pageYOffset
应提供当前滚动偏移量。如果你也需要的话,这里有一个
窗口。pageXOffset

我也有同样的问题。。。这就成功了:

var scrollX=window.pageXOffset;var scrollY=window.pageYOffset


从这个问题中得到了答案:

我在iPad上也遇到了同样的问题。只需取消激活控制台。在Safari中打开控制台时,视口高度会发生变化。

这确实会起作用:

var scrollX = window.pageXOffset; 
var scrollY = window.pageYOffset;
如果您在iFrame中查看内容(例如,这在WebView中很常见),则需要添加父项:

var scrollX = parent.window.pageXOffset;
还要注意,这些值是不可写的。因此,要更改滚动位置,您需要使用window.scrollTo方法:

var scrollX = window.pageXOffset; 
var scrollY = window.pageYOffset;
window.scrollTo(scrollX -100, scrollY -100);

下面是一个简单的代码,用于查找设备是否为iphone,以及根据某些操作将滚动位置更改为特定位置。只有当我点击并打开一个图像作为弹出窗口时,iphone才出现问题,因为垂直滚动比我想要的位置要低。所以我写了这段代码,它解决了这个问题

if((navigator.userAgent.match(/iPhone|iPad|iPod/i))){
    ('#tutorial-landlord').click(function(){
        window.scroll(100, 1500); // x, y (horizontal, vertical position) 
    });
}
查找滚动位置。只需进入chrome控制台并编写
window.Scrollyforvertical并查看位置如何变化,因此请注意该数字并将其替换为x和y

如果由于任何原因pageXOffset和pageYOffset失败,解决方案很简单,但相当愚蠢:

//强制将元素放在页面的左上角
var topLeftMarker=document.createElement(“span”);
topLeftMarker.style.position=“绝对”;
topLeftMarker.style.left=“0”;
topLeftMarker.style.top=“0”;
document.body.appendChild(topLeftMarker)
函数scrollOffset(){
//getBoundingClientRect()返回视口空间中元素的矩形,
//哪个是左滚动和右滚动
const rect=topLeftMarker.getBoundingClientRect();
返回{x:rect.left,y:rect.top}
}

document.body.scrollTop也不起作用。它将在桌面上的Safari中工作,但在移动Safari中不起作用-它总是报告0。对于google closure的用户来说,这看起来不太有希望:除非它在最近的测试版中有所改变,否则这是行不通的。这是我最初问题的关键。。。虽然我承认我使用了pageXOffset而不是pageYOffset。pageYOffset现在正在我的配送应用程序中工作。但是我不使用X,所以这可能是不同之处。