Javascript 与'有关的问题;无法防止默认(…),因为目标被视为被动';——在实施解决方案时遇到问题
很抱歉,这并不是一个“代码问题”,但我对编程社区有一些信心,所以我还是会问 每当我向下滚动时,我总是在开发工具中遇到这个错误:“由于目标被视为被动的,所以无法在被动事件侦听器中防止默认。” 我知道这是由谷歌的更新引起的。问题是,我看到了解决方案,但对如何实现它们却一无所知 (请注意,我没有使用jQuery) 下面是使用preventDefault的一段代码:Javascript 与'有关的问题;无法防止默认(…),因为目标被视为被动';——在实施解决方案时遇到问题,javascript,scroll,preventdefault,Javascript,Scroll,Preventdefault,很抱歉,这并不是一个“代码问题”,但我对编程社区有一些信心,所以我还是会问 每当我向下滚动时,我总是在开发工具中遇到这个错误:“由于目标被视为被动的,所以无法在被动事件侦听器中防止默认。” 我知道这是由谷歌的更新引起的。问题是,我看到了解决方案,但对如何实现它们却一无所知 (请注意,我没有使用jQuery) 下面是使用preventDefault的一段代码: window.addEventListener("wheel", function(event) { viewStart
window.addEventListener("wheel", function(event) {
viewStart = scrolled.scrollTop;
if (!pageJump) {
var pageHeight = page.scrollHeight;
var pageStopPortion = pageHeight / 2;
var viewHeight = window.innerHeight;
var viewEnd = viewStart + viewHeight;
var pageStartPart = viewEnd - pageStart;
var pageEndPart = pageStart + pageHeight - viewStart;
var canJumpDown = pageStartPart >= 0;
var stopJumpDown = pageStartPart > pageStopPortion;
var canJumpUp = pageEndPart >= 0;
var stopJumpUp = pageEndPart > pageStopPortion;
var scrollingForward = event.deltaY > 0;
if (
(scrollingForward && canJumpDown && !stopJumpDown) ||
(!scrollingForward && canJumpUp && !stopJumpUp)
) {
event.preventDefault();
scrollToPage();
}
false; //
} else {
event.preventDefault();
}
});
下面是stackoverlow建议的解决方案:
我知道这是建议我添加以下代码:
el.addEventListener('someEvent', someFn, { passive: false });
有人能指导我如何“添加”它吗?
因此,与以下情况不同:
event.preventDefault();
我应该使用这个代码吗
window.addEventListener("wheel", function(event){
...all of the code except 'event.preventDefault()'...
}, {passive: false});
还是我把一切都搞砸了?老实说,任何反馈都将非常感谢。您按照它显示的内容执行操作,除了用事件处理程序函数替换
someFn
:
window.addEventListener("wheel", function(event) {
viewStart = scrolled.scrollTop;
if (!pageJump) {
var pageHeight = page.scrollHeight;
var pageStopPortion = pageHeight / 2;
var viewHeight = window.innerHeight;
var viewEnd = viewStart + viewHeight;
var pageStartPart = viewEnd - pageStart;
var pageEndPart = pageStart + pageHeight - viewStart;
var canJumpDown = pageStartPart >= 0;
var stopJumpDown = pageStartPart > pageStopPortion;
var canJumpUp = pageEndPart >= 0;
var stopJumpUp = pageEndPart > pageStopPortion;
var scrollingForward = event.deltaY > 0;
if (
(scrollingForward && canJumpDown && !stopJumpDown) ||
(!scrollingForward && canJumpUp && !stopJumpUp)
) {
event.preventDefault();
scrollToPage();
}
false; //
} else {
event.preventDefault();
}
}, {passive: false});
// ^^^^^^^^^^^^^^^^
旁注:
false如果该代码中的块没有任何作用,则在第一个块的末尾执行code>。删除它。我应该使用这个代码吗?
好吧,试试看。。?那你就有答案了