JavaScript中按两次F11仍退出全屏的原因排查
问题原因
- 浏览器对F11的全屏切换属于原生系统级操作,
event.preventDefault()无法完全拦截该默认行为。即便你在代码里阻止了事件传播,浏览器仍会直接响应F11的全屏指令,绕开你编写的事件监听逻辑。 - 代码中
isTogglingFullScreen被设为true后没有重置为false的逻辑,但这并非两次按F11能退出全屏的核心原因——关键还是浏览器原生行为的优先级更高。 - Phaser封装的全屏API(
startFullscreen/stopFullscreen)和浏览器原生全屏状态并非完全同步。用户按下F11时,浏览器直接切换了自身的全屏状态,和Phaser维护的isFullscreen状态脱节,你的代码逻辑无法覆盖这种原生操作。
相关代码
this.input.keyboard.on('keydown-F11', (event) => { event.preventDefault(); console.log("isTogglingFullScreen: ", isTogglingFullScreen); if (!isTogglingFullScreen){ console.log("toggleFullScreen called"); isTogglingFullScreen = true; this.scale.isFullscreen ? this.scale.stopFullscreen() : this.scale.startFullscreen(); } });
内容的提问来源于stack exchange,提问作者Newboy11
相关产品推荐
相关产品推荐

