紧急求助 如何设置按钮和键盘的绑定

问题描述一下:之前工作网页上的一个提交按钮可以通过键盘T字快捷提交的,今天发现不能用了,请问如何设置实现 网页上一个固定但是会移动的按钮和键盘某个按键的绑定?(油猴,在控制台设置,软件等都可)感谢x30086


更新:
确定了这个

<button type="button" class="xxx"><span>批量通过</span></button>

onclick是绑定点击事件,改成click()试试

approveAllBtn__8kvpE如果是class的话前面要加.

const btn= document.querySelector(".approveAllBtn__8kvpE")

document.addEventListener("keydown", function(event) {
  if (event.key === "t") {
    btn.click()
  }
});


大兄弟 成这样了 :crying_cat_face: 感谢你的回复!

let keysDown = {};
window.onkeydown = function(e) {
  keysDown[e.key] = true;

  if (keysDown["t"]) {
    //do what you want when control and a is pressed for example
    //document.querySelector('approveAllBtn___8kvpE').click();
const approveBtn = document.querySelector(".approveAllBtn__8kvpE") document.addEventListener("keydown", function(event) { if (event.key === "t") { approveBtn.click() } });
  }
  else if( keysDown["g"]){
    console.log("thx");
  }
}

window.onkeyup = function(e) {
  keysDown[e.key] = false;
}

只要执行这段,看看效果

const btn= document.querySelector(".approveAllBtn__8kvpE")

document.addEventListener("keydown", function(event) {
  // 加上 toLowerCase() 大写T状态下也生效
  if (event.key.toLowerCase() === "t") {
    btn.click()
  }
});


这样的 还是读不出 click

重新输入这一行看看:
console.log(document.querySelector(".approveAllBtn__8kvpE"))


显示这样的 有什么关系嘛 刚刚上面的刷新后成功了 感谢大佬!!!

成功就行,不是大佬哈 :joy: ,你新建油猴脚本放进去看看能不能生效

测试了一遍

最开始的可以
加入大小写不行
后面又可以了

放在油猴里 两个都不行 :joy_cat:


显示这个 先休息了 有时间继续请教

  • 提交按钮是刷新页面后立即出现的吗?

  • 先在// ==UserScript== // ==UserScript==之间插入// @run-at document-end试试

// ==UserScript==
// @run-at document-end
// ==UserScript==
  • Ctrl + Shift + C 后点击提交按钮,向上找,确认下是否在#shadow-root (open或close)<iframe> 里面


上面为按钮处一行的代码,没搜到 shadow-root (open或close) 或 iframe

脚本如下(已在开头添加):

运行报错如下:

这个是后台管理页面吧?有敏感数据的话记得打马

试试这段:

function handleKey() {
  const btn = document.querySelector(".approveAllBtn__8kvpE")
  console.log('\n== ↓ ↓ ↓ ↓ ↓ == \n', btn)
  document.addEventListener("keydown", function(event) {
    if (event.key.toLowerCase() === "t") {
      btn.click()
    }
  })
}

setTimeout(handleKey, 2000)

@EMANON HI 整个问题的解决过程还是很赞的。建议修改一下原帖里涉及工作的内容就保留着吧。

另外记得给解决问题的同学标记一下解决方案