From 70a63f7c626bf1982d7ee9d09e7a2ca943fcf046 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Viktor=20Dem=C4=8D=C3=A1k?= <71095952+vdemcak@users.noreply.github.com> Date: Sat, 24 Jan 2026 21:21:43 +0100 Subject: [PATCH] [web] Fix Emscripten's Closure compiler error: undeclared canvas variable (#5507) * Fix Emscripten Closure compiler error: undeclared canvas variable * Fix hardcoded canvas IDs in web targets --- src/platforms/rcore_web.c | 9 +++++---- src/platforms/rcore_web_emscripten.c | 5 +++-- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/platforms/rcore_web.c b/src/platforms/rcore_web.c index b0a145f67..986197b9d 100644 --- a/src/platforms/rcore_web.c +++ b/src/platforms/rcore_web.c @@ -316,15 +316,16 @@ void ToggleBorderlessWindowed(void) // 2. The style unset handles the possibility of a width="value%" like on the default shell.html file EM_ASM ( + const canvasId = UTF8ToString($0); setTimeout(function() { Module.requestFullscreen(false, true); setTimeout(function() { - canvas.style.width="unset"; + document.querySelector(canvasId).style.width="unset"; }, 100); }, 100); - ); + , platform.canvasId); FLAG_SET(CORE.Window.flags, FLAG_BORDERLESS_WINDOWED_MODE); } } @@ -1238,9 +1239,9 @@ int InitPlatform(void) // Avoid creating a WebGL canvas, avoid calling glfwCreateWindow() emscripten_set_canvas_element_size(platform.canvasId, CORE.Window.screen.width, CORE.Window.screen.height); EM_ASM({ - const canvas = document.getElementById("canvas"); + const canvas = document.querySelector(UTF8ToString($0)); Module.canvas = canvas; - }); + }, platform.canvasId); // Load memory framebuffer with desired screen size // NOTE: Despite using a software framebuffer for blitting, GLFW still creates a WebGL canvas, diff --git a/src/platforms/rcore_web_emscripten.c b/src/platforms/rcore_web_emscripten.c index ad26077f4..ba2489a31 100644 --- a/src/platforms/rcore_web_emscripten.c +++ b/src/platforms/rcore_web_emscripten.c @@ -280,15 +280,16 @@ void ToggleBorderlessWindowed(void) // 2. The style unset handles the possibility of a width="value%" like on the default shell.html file EM_ASM ( + const canvasId = UTF8ToString($0); setTimeout(function() { Module.requestFullscreen(false, true); setTimeout(function() { - canvas.style.width="unset"; + document.querySelector(canvasId).style.width="unset"; }, 100); }, 100); - ); + , platform.canvasId); FLAG_SET(CORE.Window.flags, FLAG_BORDERLESS_WINDOWED_MODE); } }