【问题标题】:How to make a greasemonkey script that clicks a button on page when a key is pressed?如何制作一个在按下键时单击页面上的按钮的greasemonkey脚本?
【发布时间】:2017-11-27 16:25:28
【问题描述】:

我正在尝试为 DeviantArt 创建一个脚本,当我按下删除键时单击“从通知中删除”。 Deviantart 允许用户关注艺术家并在通用通知系统下提供任何新的艺术作品。当您单击通知中的某些艺术品时,右侧会出现一个按钮,可让用户从通知中删除该艺术品。

Image Link

这是我尝试过但不起作用的代码。

// ==UserScript==
// @name           Deviations remove shortcut
// @namespace      DeviationsRemShortcut
// @include      http://www.deviantart.com/art/*
// @include      https://www.deviantart.com/art/*
// ==/UserScript==

(function(){
document.addEventListener('keydown', function(e) {
 // pressed del
  if (e.keyCode == 46 && !e.shiftKey && !e.ctrlKey && !e.altKey &&     !e.metaKey) {
  document.querySelector(".remove-message-button").click(); // this will trigger the click event
  }
}, false);
})();

当我手动输入 document.querySelector(".remove-message-button").click();进入控制台,它按预期工作。

【问题讨论】:

    标签: javascript jquery keyboard-shortcuts greasemonkey deviantart-api


    【解决方案1】:

    我假设您想通过按下某个键来为功能Remove from notifications 创建一个快捷键。

    我在网上找到了一段示例代码http://jsfiddle.net/arunpjohny/SZ9TG/1/

    要让它工作,将光标移动到 UI 输出区域,然后单击输出部分的任意位置,我认为这样它就知道你在这个窗口上。然后它会监听您的 keydown 事件。它使用window.addEventListener 而不是document.addEventListener

    【讨论】:

    • 我替换了 document.querySelector(".remove-message-button").click(); // 这将触发您的行的点击事件。这并没有什么不同。我确实遇到了这个链接,虽然它显示了我正在尝试做的事情的 javascript,但是在我使用 firefox 时需要一个 chrome 扩展。 bakkeby.deviantart.com/art/… 问题不在于querySelector 行,当我直接将它输入到控制台时它会发挥作用。我认为 if 语句没有触发。
    • ok,能不能调试一下,看看是否触发了事件?我的意思是keydown 事件。
    • @HenryChalice 在用户按下键时处理Remove from notifications 是否正确,这与用户单击按钮时具有相同的功能?所以你要做的是通过快捷方式删除,对吗?
    猜你喜欢
    • 2012-01-01
    • 1970-01-01
    • 2018-05-15
    • 1970-01-01
    • 1970-01-01
    • 2023-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多