【发布时间】:2019-05-15 20:03:59
【问题描述】:
我管理一个包含多个嵌入式网页的网站。它是 Mantis Bug Tracker 的一种形式,用于提交工单。创建票证后,会给出几个按钮,关闭,分配等。我正在寻找选择关闭按钮,我已经可以这样做,然后单击关闭注释区域,我可以根据了解元素来确定并使用document.querySelectorAll("input[value=Close]")[0].click()。
这行得通。但是,它是使用两个脚本完成的。
我正在尝试将其压缩为一个脚本。
我尝试添加第二页的包含和特定页面所需的脚本,但在现实世界中这并不完全有效。
脚本 1:
document.onkeyup = function(e) {
if (e.which == 117) {
document.querySelectorAll("input[value=Close]")[0].click();
} else if (e.ctrlKey && e.which == 66) {
alert("Ctrl + B shortcut combination was pressed");
} else if (e.ctrlKey && e.altKey && e.which == 89) {
alert("Ctrl + Alt + Y shortcut combination was pressed");
}
}
脚本 2:
var EffectiveDate = "";
document.onkeyup = function(e) {
if (e.which == 117) {
document.querySelectorAll("textarea[name=bugnote_text]")[0].value = " ";
document.querySelectorAll("input[value='Close Ticket']")[0].click();
} else if (e.ctrlKey && e.which == 66) {
alert("Ctrl + B shortcut combination was pressed");
} else if (e.ctrlKey && e.altKey && e.which == 89) {
alert("Ctrl + Alt + Y shortcut combination was pressed");
}
}
第一组代码是为第一个初始页面设计的,它只需要找到一个特定的按钮并按下它。一旦处理完毕。我想让第二组代码在新页面加载后无缝运行,但到目前为止,这是两个独立的脚本,它们成功地完成了我想要的操作。
我能够找到所需的元素,并且可以正确执行所述过程,只是希望将脚本简化为一个脚本。这当然不会像给出的那样运行,但它确实在单独的用户脚本中工作。这可能吗?
【问题讨论】:
-
您是否尝试过将共享逻辑剥离到一个 JavaScript 文件中,然后导入到两个页面中?
-
我不确定你的意思。我的意思是我已经尝试让两个页面都匹配,并将两个任务的代码放在同一个文件中,但是我在 JavaScript 中太新了,我确信我在这个过程中搞砸了一些东西。据我了解,每项任务都需要自己的功能正确吗?所以初始关闭需要自己的功能,而二次关闭需要自己的功能,对吗?但如果是这样的话,它会在运行时抛出错误吗?在用户脚本文件的设置中,我让它匹配正在使用的两个网页。但话又说回来,我很迷茫,可以做一些基本的事情。
标签: javascript tampermonkey userscripts