簡體   English   中英

如何在移動safari / iphone中找到(在javascript中)當前的“滾動”偏移量

[英]How to find (in javascript) the current “scroll” offset in mobile safari / iphone

我想知道用戶在iphone上的移動版Safari中在視口內“滾動”了多遠的x / y偏移量。

換句話說,如果我(通過javascript)重新加載當前頁面,我想找到我需要傳遞給window.scrollTo(...)的值,以便重新定位文檔/視口,因為它當前。

window.pageXOffset始終報告0

jquery的$('body')。scrollTop()總是報告0

事件有一個pageX,但如果您的手勢是向上/向下“輕彈”頁面,這將不會解釋在您松開手指后發生的頁面滾動。 也就是說,當手指離開屏幕時,它會給我一個點,但這並不總是與頁面完成滾動后的位置相匹配。

有什么指針嗎?

window.pageYOffset應該為您提供當前的滾動偏移量。 如果你需要的話,還有window.pageXOffset

這確實有效:

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);

我遇到了同樣的問題...這就是訣竅:

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

從這個問題得到: 在移動(iPhone)Safari中獲取視口的當前位置

這是一個簡單的代碼,用於查找設備是否為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.scrollY作為垂直方向,看看位置是如何變化所以記下這個數字並用它來代替x和y

我在iPad上遇到了同樣的問題。 只需停用控制台即可。 在Safari中打開控制台時,視口高度會更改。

你嘗試過純粹的js方式嗎?

document.body.scrollTop

嘿! 嘗試通過鏈接。

或嘗試以下代碼。

[myWebView stringByEvaluatingJavaScriptFromString: @"scrollY"];

實際上 - 我從這個問題得到了答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM