emscripten-core / emscripten-core/emscripten

Bug: emscripten_set_wheel_callback is passive

Open
#10,091 6 comments 1 reaction 0 assignees View on GitHub
good first bug help wanted
Dominant language
C++
Stars
27.6k
Forks
3.6k
Avg merge
1d 1h
Merged PRs (30d)
105

Description

Repro:

```c++
#include
#include

int callback(int a, const EmscriptenWheelEvent* b, void* c) {
return EM_TRUE; // Call preventDefault() on the event
}

int main() {
emscripten_set_wheel_callback(0, 0, 0, callback);
return 0;
}
```

Compile the above with 1.38.43-upstream and embed in a HTML file with ``. Open the HTML file and scroll with the mouse wheel.

Unexpected: Chrome prints out this to the console:

> [Intervention] Unable to preventDefault inside passive event listener due to target being treated as passive. See https://www.chromestatus.com/features/6662647093133312

The fix is to add `{passive: false}` to the call to `addEventListener` like this:

```js
window.addEventListener("wheel", callback, {passive: false});
```

Ideally this would be configurable in the `emscripten_set_wheel_callback` API call, but I don't see a way to do that.

See https://developers.google.com/web/updates/2017/01/scrolling-intervention for more information.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.