javascript - 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();
}
}
}
}
});
当我按下空格键时,麦克风不会受到影响,另一方面,如果我添加警报,那效果很好。可能是什么错误?
提前致谢
解决方案
如果我在不查看 Google Meet 的源代码的情况下进行猜测,我会认为这是因为isTrusted
您尝试模拟的事件的属性。
前段时间我被这个打败了,但我对它的理解是,当事件被用户触发时,event.isTrusted
是true
,但是当它被脚本触发时event.isTrusted
是false
在 Google Meet 的源代码中,很可能有一个if
语句检查此属性是否为真。例如:
if (event.isTrusted) {
//toggle microphone
}
这样做的最可能原因是,如果病毒感染了用户的计算机,它就不能轻易地切换他们的麦克风。
推荐阅读
- android - 如何在 Android Studio 中请求位置更新
- asp.net - 如何在 ASP.Net 的 gridView 中显示来自 Web 服务的数据
- python - 如何在为机器学习准备数据时定义一系列值
- java - 如何检查用户是否按下特定键,即 Enter Key Like python 的键盘模块?
- sql - Azure Synapse Polybase/外部表 - 我们可以在创建外部表时从文件中获取行号吗
- mysql - 子查询使用我的 sql 返回超过 1 行
- sql - T-SQL:计算表达式前的分号数
- javascript - Turbolinks 在 css/图像之前加载内容
- flutter - 颤振滑块覆盖颜色
- ios - 如何在 iOS 中打开作为 Safari 浏览器打开的 PWA 的外部链接?