From f6a519b6e47a618171627ed56570cbac925e2cc7 Mon Sep 17 00:00:00 2001 From: dijunkun Date: Tue, 18 Nov 2025 16:56:26 +0800 Subject: [PATCH] [fix] fix setPointerCapture error --- control.js | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/control.js b/control.js index 8bc0516..765f239 100644 --- a/control.js +++ b/control.js @@ -336,7 +336,15 @@ this.state.touchLastPos = { x: event.clientX, y: event.clientY }; } } - this.elements.video?.setPointerCapture?.(event.pointerId ?? 0); + // Try to capture pointer, but handle errors gracefully + if (this.elements.video && event.pointerId !== undefined && event.pointerId !== null) { + try { + this.elements.video.setPointerCapture(event.pointerId); + } catch (err) { + // Ignore errors (e.g., element not in document, pointer already captured, etc.) + // console.warn("setPointerCapture failed:", err); + } + } return; } @@ -349,7 +357,16 @@ this.requestPointerLock(); } - this.elements.video?.setPointerCapture?.(event.pointerId ?? 0); + // Try to capture pointer, but handle errors gracefully + if (this.elements.video && event.pointerId !== undefined && event.pointerId !== null) { + try { + this.elements.video.setPointerCapture(event.pointerId); + } catch (err) { + // Ignore errors (e.g., element not in document, pointer already captured, etc.) + // console.warn("setPointerCapture failed:", err); + } + } + this.sendMouseAction({ x: this.state.normalizedPos.x, y: this.state.normalizedPos.y,