我试过同时使用 scrollTo(y,x) 和 scrollTop(x-pos),括号中的值是单个 DOM 元素的 offset.top 值。这些似乎最初在所有浏览器中都有效,但是当刷新 Chrome 以重新发送表单提交时,页面会在一瞬间跳转到它应该在的位置,然后跳回顶部。当我在刷新页面之前滚动回页面顶部时会发生这种情况。Chrome 是否会保存某种会话变量或在刷新时跟踪页面位置,以便在单击刷新时页面聚焦于上次查看的屏幕部分?如果是这样,有没有办法防止 Chrome 做出这种反应?我尝试添加一个 setTimeout,希望我的 scrolltop 或 scrollto(如前所述,我都尝试过)等到 Chrome 对页面加载做出反应,但结果没有改变。
if ($('.register_box').length > 0) {
if ($('.register_box').find('.error').length > 0) {
var regbox = $('.register_box').offset();
$('body').scrollTop(regbox.top);
}
}
我尝试了“body”、“html”、选择器包装器、窗口、屏幕以及它们的组合——没有变化。我还提醒了 regbox.top 的值并始终获得 699 的值,所以我知道它传递了正确的值。我是否需要停止传播或防止违约,如果需要,在哪里?Firefox 和 IE 都正确响应。Mac 和 PC 上的 Chrome 不支持。