From 62e77d66a8e65a1c0d59655e90922382301973a6 Mon Sep 17 00:00:00 2001 From: Sam Clegg Date: Tue, 18 Nov 2025 17:53:15 -0800 Subject: [PATCH] Remove use of global `event` object from libhtml5.js. NFC This fallback to `windows.event` goes all the way back to the original implementation in 2014: 96895e6dae8cf1314f8b4ce3fbab4e7c70ecaf4a. According to AI the reason for this code was likely IE support: """ This common JavaScript pattern used in legacy code to ensure cross-browser compatibility for accessing the event object. This was necessary because older versions of Microsoft Internet Explorer (IE) handled events differently than the standards-compliant browsers. """ --- src/lib/libglut.js | 1 - src/lib/libhtml5.js | 28 +++++++++---------- src/lib/libhtml5_webgl.js | 2 +- .../test_codesize_hello_dylink_all.json | 4 +-- 4 files changed, 17 insertions(+), 18 deletions(-) diff --git a/src/lib/libglut.js b/src/lib/libglut.js index 0527dd8274ae8..7b405fbacbce5 100644 --- a/src/lib/libglut.js +++ b/src/lib/libglut.js @@ -257,7 +257,6 @@ var LibraryGLUT = { Browser.calculateMouseEvent(event); // cross-browser wheel delta - var e = window.event || event; // old IE support // Note the minus sign that flips browser wheel direction (positive direction scrolls page down) to native wheel direction (positive direction is mouse wheel up) var delta = -Browser.getMouseWheelDelta(event); delta = (delta == 0) ? 0 : (delta > 0 ? Math.max(delta, 1) : Math.min(delta, -1)); // Quantize to integer so that minimum scroll is at least +/- 1. diff --git a/src/lib/libhtml5.js b/src/lib/libhtml5.js index ca90bc05b7ebd..7bdfd4d42c1c2 100644 --- a/src/lib/libhtml5.js +++ b/src/lib/libhtml5.js @@ -504,7 +504,7 @@ var LibraryHTML5 = { JSEvents.mouseEvent ||= _malloc(eventSize); target = findEventTarget(target); - var mouseEventHandlerFunc = (e = event) => { + var mouseEventHandlerFunc = (e) => { // TODO: Make this access thread safe, or this could update live while app is reading it. fillMouseEventData(JSEvents.mouseEvent, e, target); @@ -595,7 +595,7 @@ var LibraryHTML5 = { JSEvents.wheelEvent ||= _malloc(eventSize) // The DOM Level 3 events spec event 'wheel' - var wheelHandlerFunc = (e = event) => { + var wheelHandlerFunc = (e) => { var wheelEvent = JSEvents.wheelEvent; fillMouseEventData(wheelEvent, e, target); {{{ makeSetValue('wheelEvent', C_STRUCTS.EmscriptenWheelEvent.deltaX, 'e["deltaX"]', 'double') }}}; @@ -656,7 +656,7 @@ var LibraryHTML5 = { #else #endif - var uiEventHandlerFunc = (e = event) => { + var uiEventHandlerFunc = (e) => { if (e.target != target) { // Never take ui events such as scroll via a 'bubbled' route, but always from the direct element that // was targeted. Otherwise e.g. if app logs a message in response to a page scroll, the Emscripten log @@ -717,7 +717,7 @@ var LibraryHTML5 = { var eventSize = {{{ C_STRUCTS.EmscriptenFocusEvent.__size__ }}}; JSEvents.focusEvent ||= _malloc(eventSize); - var focusEventHandlerFunc = (e = event) => { + var focusEventHandlerFunc = (e) => { var nodeName = JSEvents.getNodeNameForTarget(e.target); var id = e.target.id ? e.target.id : ''; @@ -780,7 +780,7 @@ var LibraryHTML5 = { var eventSize = {{{ C_STRUCTS.EmscriptenDeviceOrientationEvent.__size__ }}}; JSEvents.deviceOrientationEvent ||= _malloc(eventSize); - var deviceOrientationEventHandlerFunc = (e = event) => { + var deviceOrientationEventHandlerFunc = (e) => { fillDeviceOrientationEventData(JSEvents.deviceOrientationEvent, e, target); // TODO: Thread-safety with respect to emscripten_get_deviceorientation_status() #if PTHREADS @@ -850,7 +850,7 @@ var LibraryHTML5 = { var eventSize = {{{ C_STRUCTS.EmscriptenDeviceMotionEvent.__size__ }}}; JSEvents.deviceMotionEvent ||= _malloc(eventSize); - var deviceMotionEventHandlerFunc = (e = event) => { + var deviceMotionEventHandlerFunc = (e) => { fillDeviceMotionEventData(JSEvents.deviceMotionEvent, e, target); // TODO: Thread-safety with respect to emscripten_get_devicemotion_status() #if PTHREADS @@ -932,7 +932,7 @@ var LibraryHTML5 = { var eventSize = {{{ C_STRUCTS.EmscriptenOrientationChangeEvent.__size__ }}}; JSEvents.orientationChangeEvent ||= _malloc(eventSize); - var orientationChangeEventHandlerFunc = (e = event) => { + var orientationChangeEventHandlerFunc = (e) => { var orientationChangeEvent = JSEvents.orientationChangeEvent; fillOrientationChangeEventData(orientationChangeEvent); @@ -1041,7 +1041,7 @@ var LibraryHTML5 = { var eventSize = {{{ C_STRUCTS.EmscriptenFullscreenChangeEvent.__size__ }}}; JSEvents.fullscreenChangeEvent ||= _malloc(eventSize); - var fullscreenChangeEventhandlerFunc = (e = event) => { + var fullscreenChangeEventhandlerFunc = (e) => { var fullscreenChangeEvent = JSEvents.fullscreenChangeEvent; fillFullscreenChangeEventData(fullscreenChangeEvent); @@ -1541,7 +1541,7 @@ var LibraryHTML5 = { var eventSize = {{{ C_STRUCTS.EmscriptenPointerlockChangeEvent.__size__ }}}; JSEvents.pointerlockChangeEvent ||= _malloc(eventSize); - var pointerlockChangeEventHandlerFunc = (e = event) => { + var pointerlockChangeEventHandlerFunc = (e) => { var pointerlockChangeEvent = JSEvents.pointerlockChangeEvent; fillPointerlockChangeEventData(pointerlockChangeEvent); @@ -1590,7 +1590,7 @@ var LibraryHTML5 = { targetThread = JSEvents.getTargetThreadForEventCallback(targetThread); #endif - var pointerlockErrorEventHandlerFunc = (e = event) => { + var pointerlockErrorEventHandlerFunc = (e) => { #if PTHREADS if (targetThread) __emscripten_run_callback_on_thread(targetThread, callbackfunc, eventTypeId, 0, userData); else @@ -1739,7 +1739,7 @@ var LibraryHTML5 = { var eventSize = {{{ C_STRUCTS.EmscriptenVisibilityChangeEvent.__size__ }}}; JSEvents.visibilityChangeEvent ||= _malloc(eventSize); - var visibilityChangeEventHandlerFunc = (e = event) => { + var visibilityChangeEventHandlerFunc = (e) => { var visibilityChangeEvent = JSEvents.visibilityChangeEvent; fillVisibilityChangeEventData(visibilityChangeEvent); @@ -1938,7 +1938,7 @@ var LibraryHTML5 = { var eventSize = {{{ C_STRUCTS.EmscriptenGamepadEvent.__size__ }}}; JSEvents.gamepadEvent ||= _malloc(eventSize); - var gamepadEventHandlerFunc = (e = event) => { + var gamepadEventHandlerFunc = (e) => { var gamepadEvent = JSEvents.gamepadEvent; fillGamepadEventData(gamepadEvent, e["gamepad"]); @@ -2026,7 +2026,7 @@ var LibraryHTML5 = { $registerBeforeUnloadEventCallback__deps: ['$JSEvents', '$findEventTarget'], $registerBeforeUnloadEventCallback: (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString) => { - var beforeUnloadEventHandlerFunc = (e = event) => { + var beforeUnloadEventHandlerFunc = (e) => { // Note: This is always called on the main browser thread, since it needs synchronously return a value! var confirmationMessage = {{{ makeDynCall('pipp', 'callbackfunc') }}}(eventTypeId, 0, userData); @@ -2081,7 +2081,7 @@ var LibraryHTML5 = { var eventSize = {{{ C_STRUCTS.EmscriptenBatteryEvent.__size__ }}}; JSEvents.batteryEvent ||= _malloc(eventSize) - var batteryEventHandlerFunc = (e = event) => { + var batteryEventHandlerFunc = (e) => { var batteryEvent = JSEvents.batteryEvent; fillBatteryEventData(batteryEvent, battery); diff --git a/src/lib/libhtml5_webgl.js b/src/lib/libhtml5_webgl.js index f579ae57175af..dfec3518c518c 100644 --- a/src/lib/libhtml5_webgl.js +++ b/src/lib/libhtml5_webgl.js @@ -429,7 +429,7 @@ var LibraryHtml5WebGL = { target ||= Module['canvas']; #endif - var webGlEventHandlerFunc = (e = event) => { + var webGlEventHandlerFunc = (e) => { #if PTHREADS if (targetThread) __emscripten_run_callback_on_thread(targetThread, callbackfunc, eventTypeId, 0, userData); else diff --git a/test/codesize/test_codesize_hello_dylink_all.json b/test/codesize/test_codesize_hello_dylink_all.json index 4aa74ad6179b2..51e97c03eec67 100644 --- a/test/codesize/test_codesize_hello_dylink_all.json +++ b/test/codesize/test_codesize_hello_dylink_all.json @@ -1,7 +1,7 @@ { - "a.out.js": 245799, + "a.out.js": 245679, "a.out.nodebug.wasm": 574007, - "total": 819806, + "total": 819686, "sent": [ "IMG_Init", "IMG_Load",