diff options
| author | Simon Tatham <anakin@pobox.com> | 2023-02-20 19:16:35 +0000 |
|---|---|---|
| committer | Simon Tatham <anakin@pobox.com> | 2023-02-20 19:21:29 +0000 |
| commit | 5c858253f9456b970be5d5ef3e7df727d39e3da7 (patch) | |
| tree | b6fe3c9a0a25e2855d68c3b22783dd17efb8a735 | |
| parent | bbe866a3819c6a754a5b1d8c5bc5d0701796acfb (diff) | |
| download | puzzles-5c858253f9456b970be5d5ef3e7df727d39e3da7.zip puzzles-5c858253f9456b970be5d5ef3e7df727d39e3da7.tar.gz puzzles-5c858253f9456b970be5d5ef3e7df727d39e3da7.tar.bz2 puzzles-5c858253f9456b970be5d5ef3e7df727d39e3da7.tar.xz | |
Fix error about setCapture not existing.
element.setCapture only seems to exist in Firefox. On most other
browsers, our attempt to call it must have been generating a whinge in
the console log all along. But Ben's commit bb16b5a70ddf77d turned
that into a prominent alert box, triggered on every mouse click in the
puzzle canvas.
Worked around by wrapping both calls to setCapture in a local
subroutine which checks if it's there before calling it.
Also, setCapture turns out to be deprecated in any case, according to
https://developer.mozilla.org/en-US/docs/Web/API/Element/setCapture .
It looks as if the non-deprecated version is element.setPointerCapture:
https://developer.mozilla.org/en-US/docs/Web/API/Element/setPointerCapture
But it also looks as if that needs the 'pointerId' field that's only
found in 'onpointerdown' events and not 'onmousedown' ones. So
including that as an alternative will be a bigger job.
| -rw-r--r-- | emccpre.js | 11 |
1 files changed, 9 insertions, 2 deletions
@@ -284,6 +284,13 @@ function dialog_cleanup() { onscreen_canvas.focus(); } +function set_capture(element, event) { + if (element.setCapture !== undefined) { + element.setCapture(true); + return; + } +} + // Init function called early in main(). function initPuzzle() { // Construct the off-screen canvas used for double buffering. @@ -325,7 +332,7 @@ function initPuzzle() { event.preventDefault(); button_phys2log[event.button] = logbutton; - onscreen_canvas.setCapture(true); + set_capture(onscreen_canvas, event); }; var mousemove = Module.cwrap('mousemove', 'boolean', ['number', 'number', 'number']); @@ -670,7 +677,7 @@ function initPuzzle() { } else { restore_pending = true; } - resize_handle.setCapture(true); + set_capture(resize_handle, event); event.preventDefault(); }; window.addEventListener("mousemove", function(event) { |