KEYPRESS 功能未按预期工作

Posted

技术标签:

【中文标题】KEYPRESS 功能未按预期工作【英文标题】:KEYPRESS Function not working as expected 【发布时间】:2021-08-27 10:20:26 【问题描述】:

我正在尝试为 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();
                
            
        
    
);

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

【问题讨论】:

for 循环中的“items”是什么? 对不起,我忘了添加变量声明。 Items 是保存页面上所有“div”元素的变量。 【参考方案1】:

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

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

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

if (event.isTrusted) 
  //toggle microphone

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

【讨论】:

感谢您提供的信息,但有没有办法覆盖它?! 也许检查here 谢谢@c1uq92,帮了大忙:)

以上是关于KEYPRESS 功能未按预期工作的主要内容,如果未能解决你的问题,请参考以下文章

keypress/keyup 在 chrome 移动浏览器上不起作用

.keypress 在 DIV 标签上?

网格中的 Keypress 或 keydown 事件处理

AngularJS:ng-keypress 不起作用

Twitter bootstrap typeahead custom keypress ENTER 功能

选择内部功能未按预期工作