[英]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.