在努力提高渐进式网络应用程序的性能的同时,我遇到了一个新功能Passive Event Listeners,我发现很难理解这个概念.
什么是Passive Event Listeners,什么是需要有它在我们的项目?
javascript google-chrome event-listener dom-events passive-event-listeners
我使用 OpenLayers2 (v2.12) 在用户浏览器中加载和生成地图。最近,Chrome 发布了一个更新,现在当我使用鼠标滚轮放大和缩小 OpenLayers 地图时,它也会导致整个页面上下滚动。
最初,在此 Chrome 更改之前,如果我在地图中使用鼠标滚轮,它会按预期放大和缩小,但不会滚动整个页面。如果我在 OpenLayers 地图之外使用鼠标滚轮(按预期),它只会开始滚动页面。
当我现在在地图中使用鼠标滚轮时,显示以下错误:
OpenLayers.min.js:2 [Intervention] Unable to preventDefault inside passive
event listener due to target being treated as passive. See
https://www.chromestatus.com/features/6662647093133312
Run Code Online (Sandbox Code Playgroud)
我认为这是导致页面滚动的错误。
查看与此错误类似的问题,我尝试附上
touch-action: none;
Run Code Online (Sandbox Code Playgroud)
OL 地图容器的 CSS 样式,但这似乎不起作用。
错误本身指向实际 OpenLayers.js 文件中的一些代码,而不是我的代码,因此我不完全确定如何修复此错误。
在 Openlayers.min.js 文件中导致错误的代码是:
OpenLayers.Event = {
stop: function(e, t) {
t || (e.preventDefault ? e.preventDefault() : e.returnValue = !1),
e.stopPropagation ? e.stopPropagation() : e.cancelBubble = !0
},
}
Run Code Online (Sandbox Code Playgroud)
尤其是 e.preventDefault() 函数。
我引用的未缩小的 OpenLayers 文件是: https
OL地图的HTML代码是:
<div class="container-fluid …Run Code Online (Sandbox Code Playgroud)