【问题标题】:Userscript to auto-click button in GmailGmail中自动点击按钮的用户脚本
【发布时间】:2019-08-10 09:22:00
【问题描述】:

当我 Ctrl+单击 Gmail 中的电子邮件时,该电子邮件会在新选项卡中打开。在该选项卡中,有一个“标记为未读”按钮。如何制作一个userscript,在标签打开时自动单击该按钮?我正在尝试将a similar script 改编如下:

// ==UserScript==
// @name         Auto-mark email as unread
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  -
// @author       You
// @match        https://mail.google.com/mail/u/0/?ui=2&view=btop&*
// @grant        none
// ==/UserScript==

setTimeout(function() {
    document.querySelector('.bAP').click()
    alert("Hi");
}, 3000);

脚本显示警告框,但不单击按钮。与'#bAP' 相同。

【问题讨论】:

  • 不幸的是,您链接的问题完全错误。如果答案中的代码有效,则问题中列出的代码不可能无效。但是答案中的代码很脆弱,因为所有[审查]。使用以下技术:stackoverflow.com/questions/15048223/…
  • 您正在寻找的元素对点击事件没有反应。它有 mousedown、mouseup 等事件监听器。
  • @CennoxX 是的,这是尝试为复杂的 Web 应用程序制作用户脚本的痛苦。没有什么像普通的 HTML 网站了。在 <body> 上的点击通常被视为单独的向上/向下操作等。我们确实需要一些工具来模拟 Tampermonkey 中的真实用户交互。
  • OP 答案中的解决方案对您有帮助吗?它对我有用。
  • @Tomáš 既然它对你有用,而且我的选择器错误,你能否发布整个代码?

标签: greasemonkey tampermonkey userscripts


【解决方案1】:

所以,这实际上比我预期的要容易,以下代码似乎可以工作:

const downEvt = new MouseEvent("mousedown");
const upEvt = new MouseEvent("mouseup");
button.dispatchEvent(downEvt);
setTimeout(()=>button.dispatchEvent(upEvt));

【讨论】:

  • 请记住,问题document.querySelector('.bAP').click() 中的选择器也是错误的。它应该类似于document.querySelector('.J-J5-Ji .bvt')
  • @CennoxX 在发现页面使用框架后,我将选择器留给读者作为练习,这意味着您必须找到哪个框架中有按钮。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-15
  • 2021-03-22
  • 2015-04-13
  • 1970-01-01
相关资源
最近更新 更多