将事件监听器添加到gmail发送按钮

时间:2013-03-27 10:07:21

标签: javascript google-chrome google-chrome-extension addeventlistener

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

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

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

但是,gmail动态地将id分配给页面的各个元素,因此我无法事先知道要为元素id添加什么。

我的问题是如何解决这个问题?我确信还有一些其他方法可以附加事件监听器或者在DOM节点上找到“发送”按钮所在的位置。

3 个答案:

答案 0 :(得分: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改变了他们显示对话框的方式,你也必须更改你的选择器。

答案 1 :(得分:0)

我正在开发类似的扩展程序。 像你写的选择器作品,但问题是"发送"按钮仅在作曲家存在时出现。

当作曲家不存在或已经关闭时,听众就会死亡。 对? 到现在为止我已经过了一段时间"检查按钮是否存在。

感谢。

答案 2 :(得分:0)

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

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

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

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

$(".gU.Up div[role=button]");