是否有一种方法来告诉画布是否有焦点?



我有一个运行游戏的画布。您可以使用wasd说游戏中移动和箭头键等。在它的左边,有一些HTML中的设置,当编辑时可以对游戏进行实时更改。问题是,当在设置区域输入时,画布仍然接受关键输入。举个例子,如果我输入&;points&;在设置区域,画布将捕获" "在游戏中向后移动。但是,它仍然会被输入到设置区域。

我想到的解决方案是,如果画布没有焦点,则取消画布的所有关键输入。

我已经尝试使用document.activeElement!==canvas,并且没有工作。它使画布不接受按键输入,无论它是否有焦点。

我还尝试将其他所有内容粘贴在id为"notcanvas"的div中,使用document.activeElement==notcanvas,这也不起作用。它使画布始终接受按键输入,而不管它是否有焦点。

在开发"设置HTML区域"的早期,我有一个大的文本区域,我将在其中输入一些文本。检查一个文本区域是否有焦点工作,但现在我使用多个文本区域和表单输入,所以在焦点检查中单独使用每个文本区域并不是一个好的解决方案,因为我可能会添加更多,并且不想每次都回到它添加另一个单一的HTML元素来检查。

那么,有没有什么简单的方法来检查画布是否有焦点?画布还能聚焦吗?

有问题的项目链接在这里:https://replit.com/@KittyCraft0/3D-modeling-software-5 script.js: 46:32

!notcanvas.contains(document.activeElement);works

虽然它可能无法在ie浏览器中工作,根据mozilla文档:https://developer.mozilla.org/en-US/docs/Web/API/Node/contains

但是我已经在使用面向对象编程了,我想我读过一些东西,internet explorer也不兼容。

最新更新