我正在创建一个聊天应用,并且尝试为其实现自动滚动功能。
但是它不适用于Samsung Internet(适用于Firefox Dev Edition(正常模式和交互式设计模式)和Chrome Mobile),尤其是当我使用键盘上的“提交”按钮时。这是屏幕截图:
Firefox Dev Edition Interactive Design Mode Screenshot(gif)
Samsung Internet Screenshot(gif)
这是代码:
let chatview = document.querySelector('#chatview')
if (chatview.scrollTop >= chatview.scrollHeight - chatview.clientHeight)
setTimeout(() => chatview.scrollTo(0, chatview.scrollHeight), 50)
哦,我之所以增加50毫秒的延迟,是为了等待元素添加(由Vue的v-for提供支持)。
答案 0 :(得分:0)
仅对于仍在寻找答案的用户:三星Internet版本7.4.00.70有相同的问题。我已经尝试了几种滚动方法(请参见下文)。似乎是一个实现问题。
我测试过的功能:
// Throws an error saying the method is not defined
window.scrollTo(ScrollToOptions)
// Throws an error saying the method is not defined
window.scroll(ScrollToOptions)
// Throws no error (!) but doesn't work either
window.scroll(x, y)
链接:window.scrollTo(),window.scroll(ScrollToOptions),window.scroll(x, y)
自7.4版于2018年8月达到稳定状态以来,我希望它能够正常工作。
编辑:有效的解决方案
我已经在this thread中使用jQuery找到了一种解决方案。animate(( properties [, duration][, easing][, complete]))
$(element).animate(
{ scrollTop: scrolling }, // Object of CSS properties
250, // Duration
'easeOutQuad', // jQuery's Easing
() => { $(element).stop(true, true); } // Callback function
);
此处element
是要应用动画的HTML元素。有关animate()
的详细说明,请点击链接。动画完成后,将执行指定的回调函数。调用$(element).stop(true, true)
(see)可以防止滚动条被锁定。调整窗口大小后,Chrome中发生了这种情况。就我而言,调整大小事件触发了animate()
的执行,而我既不能通过鼠标滚轮也不能通过拖动滚动条来滚动。
此变通办法适用于最新的Firefox,Chrome,Opera,Edge,Firefox移动设备,Chrome移动设备,三星Internet浏览器和Opera移动设备。
我无法在野生动物园中对其进行测试。您至少需要jQuery 1.8。