javascript - 刷新后浏览器的 "return to original position"发生在 Javascript 事件链的哪个位置?

标签 javascript jquery browser cross-browser dom-events

我的网页很忙,有很多小部件。有时加载需要一两秒钟。

当我从页面顶部以外的某个位置点击刷新时,我可以看到页面加载时就好像 scrollTop==0 并且在某个时候快速返回到我的原始位置。

问题是我在 .ready() 事件处理程序中进行了各种初始化,其中一些依赖于 scrollTopscrollLeft。这些初始化发生在文档返回到其原始位置之前,然后从原始位置给出无意义的结果。

将这些初始化包装在 .load() 事件处理程序中似乎也不起作用。起作用的是通过 .load() 处理程序中的 setTimeout 添加一个(相当长的)延迟。由于显而易见的原因,这是不希望的。

这表明“返回原始位置”独立于标准事件链发生,即。未在 ECMA 标准中指定或依赖于浏览器实现。

处理仅在浏览器返回到原始位置后才需要发生的初始化的最佳方法是什么?有关联事件吗?有没有什么方法可以识别刷新已经发生并且在这种情况下只会延迟?

我的所有测试都是在 Chrome 和 Firefox 中进行的。

最佳答案

“返回原始位置”行为是浏览器作为奖励添加的一项功能,而不是标准化的功能。我认为没有特定事件是“浏览器因页面刷新而滚动”事件。

但是,如果浏览器运行正常,我怀疑它应该触发 onscroll eventwindow 滚动时。这必然是在页面加载事件之后(因为否则浏览器没有任何东西可以滚动,所以我会在加载事件之后寻找滚动事件并推断页面已被浏览器滚动.

请记住,您必须成功处理页面刷新且您获得onscroll 事件的情况。因此,我会做的(如果可能的话)是假设页面没有滚动,然后如果您确实得到了 onscroll 事件,通过重新定位并记住新位置重新开始。在加载然后重新加载的地方有一点“闪光”,但这将处理回调的异步性质。

关于javascript - 刷新后浏览器的 "return to original position"发生在 Javascript 事件链的哪个位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14385877/

相关文章:

javascript - 如何在 Knockout JavaScript 表格中创建文本链接?

javascript - 在两个不同的 MODAL BODY Bootstrap 中加载同一个表

javascript - 通过 jQuery AJAX 将字符串数组传递给 C# WebMethod

JQuery attr 不改变对话框标题

jquery - 将 href 添加到 JQuery 对话框按钮

php - 在浏览器中查看和更改 session 变量

.net - vb 2008 网页浏览器替代品

Python 3.X 玩转互联网

javascript - 如何将额外的行添加到表中,既不在末尾也不在开头? - jQuery

javascript - jQuery 从 backbone 的脚本标签中选择标记