首页 > 解决方案 > KEYPRESS 功能未按预期工作

问题描述

我正在尝试为 Google Meet 制作一个 chrome 扩展,当我按下空格键时,麦克风应该打开,反之亦然。这是我的代码...

//Listening to key events to trigger suitable event
document.addEventListener('keypress', (event) => {
        items = document.getElementsByTagName("div");
    if (event.keyCode == 32) {
        for (i = 0; i < items.length; i++) {
            if (items[i].hasAttribute("aria-label")) {
                if (items[i].getAttribute("aria-label")
                    .includes("microphone")) {
                    items[i].click();
                }
            }
        }
    }
});

当我按下空格键时,麦克风不会受到影响,另一方面,如果我添加警报,那效果很好。可能是什么错误?
提前致谢

标签: javascriptdomgoogle-chrome-extensiondom-manipulation

解决方案


如果我在不查看 Google Meet 的源代码的情况下进行猜测,我会认为这是因为isTrusted您尝试模拟的事件的属性。

前段时间我被这个打败了,但我对它的理解是,当事件被用户触发时,event.isTrustedtrue,但是当它被脚本触发时event.isTrustedfalse

在 Google Meet 的源代码中,很可能有一个if语句检查此属性是否为真。例如:

if (event.isTrusted) {
  //toggle microphone
}

这样做的最可能原因是,如果病毒感染了用户的计算机,它就不能轻易地切换他们的麦克风。


推荐阅读