javascript - 如何通过 JS(无 jQuery)使 Google Hangout 静音/取消静音?

标签 javascript google-chrome-extension hangout

我想编写一个 Chrome 扩展程序,让您可以通过浏览器操作按钮将环聊静音/取消静音,而不是让您打开环聊选项卡并在那里执行此操作,但看起来他们的 HTML 和 JS 被混淆了,所以我可以'在 JS 控制台中乱七八糟时,想不出触发它的好方法。

我能够使用

选择按钮元素本身
el = document.querySelector("[data-tooltip='Unmute microphone']");

...但是在上面运行 el.click() 不会执行任何操作。所以我尝试设置一个点击事件断点,但这只是让我进入一个巨大的 JS 文件,里面有一堆缩小的代码,所以我有点不知所措。

最佳答案

在 Chrome 开发人员工具上摆弄了几分钟之后,我决定使用调试器遍历源代码,而是研究带有断点的按钮的行为(源代码面板),并且一些有根据的猜测。

长话短说,可以通过按指定顺序触发以下事件来(取消)静音环聊:

  • mousedown - 激活按钮
  • mouseup - 触发关联的“点击”处理程序
  • mouseout - 从按钮上移除对焦环(可选)。

为了选择目标元素,我没有使用您提供的选择器,因为它不适用于本地化(非英语)环聊界面。相反,我将 CSS 类作为麦克风图标的目标,并选择其容器(按钮)“ha-w-P-y-Xi-f”。

最后,使用 MouseEvent constructor (DOM4) 和 dispatchEvent在环聊中切换麦克风的方法:

var el = document.querySelector('.ha-w-P-y-Xi-f').parentNode;
el.dispatchEvent(new MouseEvent('mousedown'));
el.dispatchEvent(new MouseEvent('mouseup'));
el.dispatchEvent(new MouseEvent('mouseout'));

关于javascript - 如何通过 JS(无 jQuery)使 Google Hangout 静音/取消静音?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17241127/

相关文章:

javascript - AngularJS - 检查文件夹是否存在

javascript - 如何在现有的隐身窗口中打开新标签页?

google-chrome - 大吊带如何运作?

google-api - Google Meet 有直接的 API 吗?

node.js - 使用 API 创建 Google 日历事件不会创建环聊链接

javascript - 在跟踪堆栈/错误对象的行号中获取文件名

Javascript - 在 iF​​rame 上失去焦点并获得关注

javascript - 使 div 像表格一样排序

join - 以编程方式将 Google Hangout 添加到网站

javascript - 我的 chrome 扩展非常大并且是事件驱动的。我可以通过哪些方式进行优化?