【问题标题】:adding EventListeners to gmail send button将 EventListeners 添加到 gmail 发送按钮
【发布时间】:2021-02-10 12:12:32
【问题描述】:

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

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

    如果您谈论的是撰写电子邮件时弹出的标准 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 改变了他们显示对话框的方式,你也必须改变你的选择器。

    【讨论】:

    • @user2215033:这有帮助吗?
    • 您好弗朗索瓦,感谢您的回复。是的,这完成了所需的工作,所以谢谢你。但是,正如您指出的那样,它将非常脆弱。所以目前我正在尝试想出一些其他的方法来达到同样的效果。如果/当我弄清楚时,我会在这里发布。
    • 嗨@FrançoisWahl 你能给我一点关于如何在发送按钮已经点击时中止电子邮件的想法。因为我正在使用kartik talwar的gmail.js
    • @HarshalPatil:我对 gmail.js 不熟悉,但我认为您单击发送的那些邮件会发送到服务器,并且您不再可以控制电子邮件,除非 gmail 有通过其 API 或类似方法公开的“召回”功能。
    • @FrançoisWahl 所以还有其他方法可以实现这一目标
    【解决方案2】:

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

    当作曲家不存在或已被关闭时,听者就死了。 正确的? 现在我有一个“间隔”来检查按钮是否存在。

    谢谢。

    【讨论】:

      【解决方案3】:

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

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

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

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

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

      【讨论】:

        猜你喜欢
        • 2013-06-23
        • 1970-01-01
        • 1970-01-01
        • 2017-04-09
        • 2017-08-15
        • 2018-06-13
        • 2013-03-07
        • 2014-03-23
        • 1970-01-01
        相关资源
        最近更新 更多