Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 向gmail发送按钮添加EventListeners_Javascript_Google Chrome_Google Chrome Extension_Addeventlistener - Fatal编程技术网

Javascript 向gmail发送按钮添加EventListeners

Javascript 向gmail发送按钮添加EventListeners,javascript,google-chrome,google-chrome-extension,addeventlistener,Javascript,Google Chrome,Google Chrome Extension,Addeventlistener,我正在编写一个Chrome扩展,它将从您发送的每封电子邮件中提取信息,并将其存储在电子表格中。我正在用javascript编写内容脚本 我希望它在您单击“发送”按钮时开始提取信息,因此我显然需要向它附加一个事件侦听器,如下所示: var el = document.getElementById("some_ID"); el.addEventListener('build', function(e){...}, false); 然而,gmail动态地将id分配给页面的各个元素,因此我无法预先知道

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

我希望它在您单击“发送”按钮时开始提取信息,因此我显然需要向它附加一个事件侦听器,如下所示:

var el = document.getElementById("some_ID");
el.addEventListener('build', function(e){...}, false);
然而,gmail动态地将id分配给页面的各个元素,因此我无法预先知道为元素id输入什么


我的问题是如何避开这个问题?我相信还有其他方法可以连接事件侦听器或访问“发送”按钮所在的DOM节点。

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

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

转到Gmail并单击compose,然后您可以在控制台中键入上述内容,这将使您进入send按钮

但如果用户切换到弹出窗口,则可能无法正常工作。

一般来说,这也可能非常脆弱。一旦gmail改变了显示对话框的方式,你也必须改变你的选择器。

如果你说的是撰写电子邮件时弹出的标准gmail对话框,你可以像下面这样移动到发送按钮:

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

转到Gmail并单击compose,然后您可以在控制台中键入上述内容,这将使您进入send按钮

但如果用户切换到弹出窗口,则可能无法正常工作。

一般来说,这也可能非常脆弱。一旦gmail改变了对话框的显示方式,你也必须改变选择器。

我正在开发一个类似的扩展。 就像您编写的选择器一样,选择器可以工作,但问题是“发送”按钮仅在作曲家存在时才会出现

当作曲家不存在或已关闭时,侦听器将死亡。 对吗? 现在我有了一个“间隔”来检查按钮是否存在


谢谢。

我正在开发一个类似的扩展。 就像您编写的选择器一样,选择器可以工作,但问题是“发送”按钮仅在作曲家存在时才会出现

当作曲家不存在或已关闭时,侦听器将死亡。 对吗? 现在我有了一个“间隔”来检查按钮是否存在


谢谢。

根据语言的不同,
数据工具提示可以更改,我正在使用以下选择器

$("[role=dialog] table .HE td div[role=button]").first();
但它仅在创建新电子邮件时有效(不回复或转发)

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

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

数据工具提示可以根据语言的不同而变化,我使用以下选择器

$("[role=dialog] table .HE td div[role=button]").first();
但它仅在创建新电子邮件时有效(不回复或转发)

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

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

@用户2215033:这有帮助吗?嗨,弗朗索瓦,谢谢你的回复。是的,这是需要的工作,所以谢谢你。然而,正如你所指出的,它将非常脆弱。所以目前我正试图想出一些其他的方法来达到同样的效果。如果我弄明白了,我会把它贴在这里。嗨@FrançoisWahl,你能告诉我当发送按钮已经点击时如何中止电子邮件吗。因为我正在使用kartik的gmail.jstalwar@HarshalPatil:我对gmail.js不太熟悉,但我认为你点击的邮件会被发送到服务器,你对邮件不再有任何控制权,除非gmail有“召回”功能通过API或类似的API公开的特性。@FrançoisWahl所以还有其他需要实现的功能吗this@user2215033:这有帮助吗?嗨,弗朗索瓦,谢谢你的回复。是的,这是需要的工作,所以谢谢你。然而,正如你所指出的,它将非常脆弱。所以目前我正试图想出一些其他的方法来达到同样的效果。如果我弄明白了,我会把它贴在这里。嗨@FrançoisWahl,你能告诉我当发送按钮已经点击时如何中止电子邮件吗。因为我正在使用kartik的gmail.jstalwar@HarshalPatil:我不熟悉gmail.js,但我认为你点击发送的邮件会被发送到服务器,你对电子邮件不再有任何控制权,除非gmail有一个通过API或类似的API公开的“召回”功能。@FrançoisWahl所以还有其他方法可以做到这一点吗