Ну, ваш код работает так, как он для меня ...
<script>
const handleWheel = e => {
console.log(e);
e.preventDefault();
};
</script>
<svelte:window on:wheel={handleWheel} />
См. в REPL .
Может быть, это ваш браузер, но я думаю, что это может быть также сам REPL (если это то, что вы использовали), который может иметь некоторые проблемы с <svelte:window />
событиями и отображать устаревшие журналы ...
На самом деле, ваше решение будет противоположно тому, что Вы хотите, и вызвать предупреждение:
window.addEventListener("wheel", handleWheel, { passive: true });
С MDN :
пассивный
логический который, если true, указывает, что функция, указанная слушателем, никогда не будет вызывать protectDefault (). Если пассивный прослушиватель вызывает функцию protectDefault (), пользовательский агент не будет ничего делать, кроме как сгенерировать консольное предупреждение.
С этим способом Svelte добавлять опции в прослушиватели событий можно с помощью модификаторы .
Например:
<svelte:window on:wheel|preventDefault={handleWheel} />
<svelte:window on:wheel|passive={handleWheel} />
Они комбинируемы, но preventDefault
и passive
не go вместе, так что давайте использовать еще один:
<svelte:window on:wheel|preventDefault|once={handleWheel} />
См. документы Svelte по событиям для доступных модификаторов и подробности:
Доступны следующие модификаторы:
warnDefault - вызывает event.preventDefault () перед запуском обработчика события (Svelte добавит его автоматически, где это можно сделать безопасно)
capture - один раз запускает обработчик во время фазы захвата вместо фазы
- удаляет обработчик после первого запуска
Модификаторы могут быть объединены в цепочку, например on:click|once|capture={...}
.