簡體   English   中英

有沒有辦法設置窗口的滾動位置而不使用scroll()或scrollTo()?

[英]Is there a way to set the window's scroll position without using scroll() or scrollTo()?

...我問的原因是Safari在執行scroll()方面存在一個錯誤,它正在破壞我的UI。

想象一下頁面:

<body>
    <div id="huge" style="width: 4000px; height: 4000px;"></div>
</body>

...這樣你就可以獲得水平和垂直滾動條。 現在,通常當您按滾動條時,頁面會滾動(垂直)。 出於我們花哨的UI的目的,我們不希望發生這種情況,因此我們壓縮keyDown事件:

window.onkeydown = function(e) {
    if(e.keyCode == 32)
    {
        return false;
    }
};

這很有效...除非我們決定不完全阻止滾動,否則我們需要自己的自定義滾動行為:

window.onkeydown = function(e) {
    if(e.keyCode == 32)
    {
        window.scroll(foo, bar); // Causes odd behavior in Safari
        return false;
    }
};

在其他瀏覽器(Chrome,Firefox)中,這會立即將窗口的滾動位置移動到所需的坐標。 但是在Safari中,這會使窗口動畫顯示所需的滾動位置,類似於按空格鍵時發生的滾動動畫。

請注意,如果您從空格鍵以外的任何鍵觸發此滾動,則不會進行動畫; 窗口會像其他瀏覽器一樣立即滾動。

如果你正好滾動,比如1000像素或更多,那么動畫卷軸會引起一些嚴重的不適。

我正試圖找到解決辦法的方法。 我懷疑沒有一個,但我希望這里有一些Javascript的神可以提出一些建議。 我真的希望能夠使用空格鍵來執行此命令。

如果您知道要滾動到文檔的哪個位置,則只需使用命名錨點即可。 設置document.location到錨(如#top#div50或其他)應該是非常可靠的。

使用document.documentElement.scrollTop = ... (以及某些瀏覽器中的document.body )。

暫無
暫無

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

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