设置 HTM5 文本会杀死 Chrome 中的滚动条拖动

Posted

技术标签:

【中文标题】设置 HTM5 文本会杀死 Chrome 中的滚动条拖动【英文标题】:Setting HTM5 text kills scrollbar drag in Chrome 【发布时间】:2018-12-21 07:52:37 【问题描述】:

我在 javascript 中有一个计时器,它每秒触发一次以更新页面中的某些文本 (html5),如下所示:

document.getElementById('CountDown').innerHTML = "some string";

这工作正常,但如果此代码在用户拖动滚动条句柄时运行,则拖动被中止。这是一个非常烦人的用户界面行为,我无法解决。

如果我在计时器事件中注释掉该行,那么滚动条将正常工作。

注意:它只发生在 Chrome 上,而不是在 Firefox 或 Opera 上。

知道如何解决这个问题吗?

【问题讨论】:

添加类似(JS Fiddle)的演示,这样我就可以重现实际问题。 正如@LaljiTadhani 提到的,请编辑您的问题以提供Minimal, Complete, and Verifiable example,因为目前我们没有足够的信息来真正帮助您。话虽如此,I created a test 使用您提供的代码,但我无法看到您遇到的问题。 感谢我正在使用 JS Fiddle 进行演示(以前从未使用过),但它似乎不喜欢使用计时器 终于让计时器在 JSFiddle 中工作(使用 jQuery ready() 函数),但它没有说明问题 - 请参阅jsfiddle.net/109nwLub/36 这一定与使用 Vue (v-for) 来生成我的可滚动表。我会尝试在 JSFiddle 中演示问题,但这并不容易。 如果你想提供一个在 JSFiddle 上使用 vue 的例子 this fiddle 是一个很好的起点 【参考方案1】:

平滑滚动是提升用户体验的一个非常重要且有效的功能,像你这样的chrome浏览器平滑滚动的情况好像有好几个,怎么不正常,但问题是必须的与旧版本相关的时间,例如:

    https://github.com/simov/simplr-smoothscroll/issues/27 https://github.com/mathiasbynens/jquery-smooth-scrolling/issues/1 https://github.com/iamdustan/smoothscroll/issues/28

您可以在 CSS 中尝试以下规则:

html, body  
    overflow: hidden, 
    height: 100% 

对于您的容器,您可以附加以下规则:

 
    overflow: auto; 
    height: 100% 

相反,由于代码在其他浏览器中工作意味着您的代码是有效的,因此只需确保您使用的是最新版本之一,清除缓存并试一试。

【讨论】:

【参考方案2】:

可能不是您想听到的答案,但几个月前我遇到了这个问题,当 javascript 更新 DOM 时,chrome 的平滑滚动功能存在几个已知错误。

较新版本的 Chrome 似乎可以更好地处理这个问题。我在最新版本的 Chrome 上做了一个快速测试,代码和你的类似,没有问题。

如果在其他浏览器中运行良好,您的代码似乎不太可能出现错误。最好建议用户确保 Chrome 已完全更新以获得最佳网站体验或使用其他浏览器。

【讨论】:

谢谢。我发现它只发生在使用 Vue.js 填充的表上。当我删除 Vue 时就可以了。我也在使用最新的 Chrome。看来我正在使用 Vue 做一些影响 Chrome 但不影响 Opera 和 FireFox 的事情。 (然而,Edge 似乎有这个和其他更严重的问题。)【参考方案3】:

现在似乎没问题 - Chrome 68.0.3440 发布后

【讨论】:

以上是关于设置 HTM5 文本会杀死 Chrome 中的滚动条拖动的主要内容,如果未能解决你的问题,请参考以下文章

当用户滚动 uitableview 时,UITableViewCell 中的文本会被删除

UITableViewCells 中的 UITextFields - 当单元格消失时,文本会消失

Firefox 和 CSS3 动画 - 为啥我的文本会抖动?

为啥链接的文本会溢出 div 框?

设置标签的文本会导致堆栈视图布局问题

以编程方式设置按钮文本会自动转到最后一个索引