我正在尝试编写一些将页面滚动到元素的代码,然后调整滚动位置以考虑带有position: fixed
的标题。
似乎最明智的做法是使用
的内容var element = document.getElementById('myElement');
element.scrollIntoView();
if(window.scrollY < window.scrollMaxY)
window.scroll(0,window.scrollY - 50);
起初这似乎有效。我不知道刚改变了什么,但出于某种原因,现在window.scrollMaxY
刚刚开始返回0,即使有明显的滚动条也不应该为零。
答案 0 :(得分:0)
在我发布问题之前,我意识到在考虑替代解决方案时问题是什么。
知道WebKit还不支持window.scrollMaxY,我找到了https://stackoverflow.com/a/1732727/990262并基于它创建了我自己的polyfill,如下所示,它位于我的Javascript文件的顶部。
/* For webkit and any other browser that doesn't have scrollMaxY */
if(!window.scrollMaxY) window.scrollMaxY = document.documentElement.scrollHeight - document.documentElement.clientHeight;
因为大多数内容是由AJAX加载的,所以在加载页面时,scrollMaxY的值为零,其值为false,导致此代码将实际值替换为该计算的结果,也被证明是零。
解决方案是修改polyfill,使测试更具体,例如if 'scrollMaxY' in window)
而不是if(!window.scrollMaxY)
并将指定的值包装在函数中。