0

我正在编写一个 Chrome 扩展程序,它将从您发送的每封电子邮件中提取信息并将其存储在电子表格中。我正在用 javascript 编写内容脚本。

我希望它在您单击发送按钮时开始提取信息,所以我显然需要像这样附加一个事件侦听器:

var el = document.getElementById("some_ID");
el.addEventListener('build', function(e){...}, false);

但是,gmail 会动态地将 id 分配给页面的各种元素,因此我无法提前知道要为元素 id 输入什么。

我的问题是如何解决这个问题?我确信还有其他方法可以附加事件侦听器或获取“发送”按钮所在的 DOM 节点。

4

3 回答 3

4

如果您谈论的是撰写电子邮件时弹出的标准 gmail 对话框,您可以像这样遍历发送按钮:

document.querySelector('table .HE td div[role="button"][data-tooltip^="Send"]')

或者

document.querySelectorAll('table .HE td div[role="button"][data-tooltip^="Send"]')[0]

转到Gmail并单击撰写,然后您可以在控制台中输入上述内容,这将使您进入发送按钮。

如果用户切换到弹出窗口,这可能不起作用。
一般来说,这也可能非常脆弱。一旦gmail改变了他们显示对话框的方式,你也必须改变你的选择器。

于 2013-03-27T10:22:07.380 回答
0

可以根据data-tooltip语言更改,我使用以下选择器

$("[role=dialog] table .HE td div[role=button]").first();

但它仅在创建新电子邮件时有效(不回复或转发)

这是另一种对我有用的方法:

$(".gU.Up div[role=button]");
于 2021-02-09T16:50:16.307 回答
0

我正在开发一个类似的扩展。像您写的选择器有效,但问题是“发送”按钮仅在作曲家存在时出现。

当作曲家不存在或已关闭时,听众就会死去。正确的?到目前为止,我有一个“间隔”来检查按钮是否存在。

谢谢。

于 2017-05-11T15:42:17.887 回答