使用JS查找并单击按钮



我正在尝试使用chrome扩展(快捷键(创建快捷键,这些快捷键可以在我们的仓库管理系统中按下按钮(这样它们就可以与条形码匹配(。

其中一个按钮没有ID,单击后按钮的内部文本将发生变化。理想情况下,我想要在任一版本的按钮上工作的快捷方式

要么是

<input type="submit" value="Create Shipment" class="btn btn-success pull-right">

<a class="btn btn-success" href="/Order/OrderDocumentP/15467" target="_blank">Print Label</a>

然后我有另一个按钮被分配给不同的快捷键

<a class="btn btn-success" href="/Picking/DespatchOrder?OrderId=13413">Despatch</a>

但我相信,一旦我找到了第一个,下一个会更容易:(

非常感谢任何帮助,我已经经历了许多其他类似的问题,但不完全是我想要的,我的JS知识非常垃圾

稍微学习一下CSS并使用https://developer.mozilla.org/ru/docs/Web/API/Document/querySelector

您的扩展可能支持

// cuz I don't like to type long "document.querySelector"
q = sel => document.querySelector(sel)
qq = sel => document.querySelectorAll(sel)
function clickOnly(sel) {
let list = qq(sel);
if (list.length == 1) list[0].click();
else alert('element "'+sel+'" is not unique!');
}
// handles *any* keypress
onkeypress = function (event) {
if (event.target.tagName == "INPUT") return; // noop on input focused
if (event.target.tagName == "TEXTAREA") return; // noop on input focused
console.log(event.code); // to see what the key is
let rawCode = event.code; // keyboard key, `KeyM` for M, `Digit7` for 7, `Slash` for /
let code = rawCode; // make CtrlAltShiftKeyM
if (event.shiftKey) code = 'Shift' + code;
if (event.altKey) code = 'Alt' + code;
if (event.ctrlKey) code = 'Ctrl' + code;
if (!kds[event.code]) return;
event.preventDefault(); // prevent CtrlKeyM browser handler for bookmarks or whatever
kds[event.code](event);
}
kds = {}
// it's a function so starts with `() => `
kds.KeyM = () => alert('it works!')
// a is for <a>, [href^=] is for href starts with
kds.ShiftKeyM = () => clickOnly('a[href^="/Order/OrderDocumentP/]')
// , is for one of multiple selectors
kds.CtrlKeyM = () => clickOnly('input[value="Create Shipment"], a[href^="/Order/OrderDocumentP/]')

这是一个简单的脚本,通过类名获取按钮并点击它。我想这就是你想要的,如果不告诉我,我会重写它。

编辑:我添加了一个循环,它将单击类名为btn-success的所有按钮或链接

我插入了第二个函数,所以按类名寻找解决方案的人仍然可以找到第一个。CCD_ 2将点击具有内部文本"的按钮;立即点击我";。

function AutoClickBtn() {
var button = document.getElementsByClassName("btn-success");
for (var i = 0; i < button.length; i++) {
button[i].click();
console.log('Success! Clicked button' + i);
}
}
setInterval(AutoClickBtn, 2000);
/* Click button by innerHTML text */
function AutoClickBtnByValue() {
var button = document.getElementsByClassName("btn-success");
for (var i = 0; i < button.length; i++) {
if (button[i].innerHTML.indexOf('click me now') > -1) {
button[i].click();
console.log('Success! Clicked button' + i + ' with value: "click me now" ');
}
}
}
setInterval(AutoClickBtnByValue, 2000);
<input type="submit" value="Create Shipment" class="btn btn-success pull-right">
<a class="btn btn-success" href="#" target="_blank">Print Label</a>
<a class="btn btn-success" href="#">Despatch</a>

<button class="btn-success">click me now</button>

最新更新