+
80
-

window.addEventListener('wheel', wheelHandler,{passive: true})为啥不能禁止网页滚动?

window.addEventListener('wheel', wheelHandler,{passive: true})为啥不能禁止网页滚动?

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum=1.0,minimum=1.0,user-scalable=0" />


    <style>
    </style>
</head>

<body>
    <div  style="height:200vh">
       滚动试试
    </div>
    <script type="text/javascript">
        window.addEventListener('wheel', wheelHandler,{passive: true})
            
        
            function wheelHandler(e) {
                e.preventDefault();
            }
    </script>
</body>

</html>

passive: true是啥意思,为啥会报错?

800_auto

网友回复

+
0
-

`window.addEventListener('wheel', wheelHandler, { passive: true })` 中的 `{ passive: true }` 选项是用来指示浏览器,你的事件处理程序不会调用 `preventDefault()` 方法。在这种情况下,`passive` 选项被设置为 `true`,以告诉浏览器你的事件处理程序不会阻止默认的滚动行为。

如果你希望禁止网页滚动,可以使用 `preventDefault()` 方法来阻止默认的滚动行为。然而,如果 `{ passive: true }` 被设置为 `true`,则 `preventDefault()` 方法将无效。要禁止滚动,你可以修改代码如下:
window.addEventListener('wheel', wheelHandler, { passive: false });

function wheelHandler(event) {
event.preventDefault(); // 阻止默认的滚动行为
// 处理其他滚动事件的逻辑
}
通过将 `{ passive: false }`,你告诉浏览器,事件处理程序可能会调用 `preventDefault()`,因此浏览器将等待处理程序执行后再决定是否阻止默认行为。这样,你可以在事件处理程序中使用 `preventDefault()` 来禁止滚动。
我知道答案,我要回答