Skrollr 手机坏了。无法在被动事件侦听器中阻止默认值

Posted

技术标签:

【中文标题】Skrollr 手机坏了。无法在被动事件侦听器中阻止默认值【英文标题】:Skrollr mobile broken. Unable to preventDefault inside passive event listener 【发布时间】:2021-09-21 11:02:39 【问题描述】:

在使用 Skrollr 库并将网站加载为移动设备时,我在所有 chromium 浏览器上都收到以下错误:

"[Intervention] Unable to preventDefault inside passive event listener due to target being treated as passive. See <URL>"

该库上周运行良好,现在我在将页面加载为移动设备时尝试的每个浏览器都出现此错误。

即使是官方 github 中的示例,在移动设备上加载时也会损坏并显示相同的错误。

有谁知道如何解决这个问题?

skrollr.js:730--

https://raw.githubusercontent.com/Prinzhorn/skrollr/master/src/skrollr.js

来自 git 链接的错误示例:

http://prinzhorn.github.io/skrollr/examples/docu/1.html
http://prinzhorn.github.io/skrollr/examples/docu/2.html
http://prinzhorn.github.io/skrollr/examples/docu/3.html
http://prinzhorn.github.io/skrollr/examples/docu/4.html

要复制,- 加载页面、检查、选择移动设备并刷新。突然间,一切都中断并报告错误。 HTML标签应该有

class="skrollr skrollr-mobile" 

如果检测到移动设备负载。

我正在使用它开发一个网站,在 7 月 21 日下午,我注意到行为发生了变化,那时我注意到了错误。

我使用它重新创建了一个简单的网站,并看到了完全相同的问题。后来我决定检查 git hub 链接示例并看到同样的问题。

会不会是浏览器内核的某种更新?非常感谢修复或绕过。

更新:

我发现在 CSS 中添加以下行可以消除错误。

* 
  touch-action: manipulation; 

不幸的是,图书馆的功能仍然不能 100% 在移动设备上运行。计算移动设备上可滚动区域量的脚本已关闭,并在文档末尾添加空格。所有滚动事件都会受到这种错误计算的影响。

【问题讨论】:

【参考方案1】:

所以在对这个问题进行了更多研究之后,我找到了一个解决方案,希望能帮助所有在 2021 年以后使用这个库的人。

要禁用错误,请添加以下 CSS:

* 
  touch-action: manipulation; 

最后要有适当的动画大小并且没有空格,特别是如果您:

transform: translateX();

当您在移动设备上时,在主滚动体上被禁用,请在结束标记之前使用以下代码。

<script type="text/javascript">
        if((/android|iPhone|iPad|iPod|BlackBerry|Windows Phone/i).test(navigator.userAgent || navigator.vendor || window.opera))
                skrollr.init(
                forceHeight: false
                );
         else 
                skrollr.init();
        
</script>

这将帮助所有想要在使用垂直滚动条时模仿水平滚动的人。

【讨论】:

以上是关于Skrollr 手机坏了。无法在被动事件侦听器中阻止默认值的主要内容,如果未能解决你的问题,请参考以下文章

无法在被动事件侦听器中阻止默认值

无法在被动事件侦听器 jQuery Mobile 中阻止默认值

react-datepicker“无法阻止被动事件侦听器调用中的默认值”

无法阻止被动事件监听器jQuery Mobile中的默认

chrome 监听touch类事件报错:无法被动侦听事件preventDefault

向阻止滚动的“touchstart”事件添加了非被动事件侦听器