滚动无法在Samsung Internet上使用

时间:2018-06-29 02:45:36

标签: javascript android

我正在创建一个聊天应用,并且尝试为其实现自动滚动功能。
但是它不适用于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提供支持)。

1 个答案:

答案 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。