6

我想编写一个 Chrome 扩展程序,让您可以通过浏览器操作按钮将环聊静音/取消静音,而不是让您打开环聊标签并在那里进行操作,但似乎他们的 HTML 和 JS 被混淆了,所以我无法弄清楚在 JS 控制台中乱搞时想要触发它。

我能够使用选择按钮元素本身

el = document.querySelector("[data-tooltip='Unmute microphone']");

...但是在上面运行el.click()并没有做任何事情。所以我尝试设置一个点击事件断点,但这只是让我进入一个带有一堆缩小代码的巨大 JS 文件,所以我有点没有想法。

4

1 回答 1

6

在使用 Chrome 开发工具几分钟后,我决定使用调试器浏览源代码,而是研究带有断点(源面板)的按钮的行为,并进行一些有根据的猜测。

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

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

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

最后,使用MouseEvent构造函数(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'));
于 2013-08-01T13:38:00.767 回答