an_rural 发表于 2023-2-3 18:15:30

纯新小白求助!

问题描述:近几天从事一份重复性图书录入工作。工作内容是:扫码,点增加,(弹出对话框后)点确定,点保存,再清空文本框,重复。趁春节假期,憋出来的代码。
我的目的是:当我点击增加后,等对话框加载完毕后自动点确定,点保存,并清空扫码输入的文本框。
但现在没反应,求助大佬看看。
var zjys=document.getElementById("listDCheckBT");//获取需要监听的按键
zjys.addEventListener.click=function()//点击此键运行
{
window.onload=function()//等待弹出的对话框加载完毕
{document.getElementById("local_okBtn").click();//点击确定
document.getElementById("dCheckDialog_save").click();//点击保存
document.getElementById("col1Text").value=null;//获取待输入文本框,并清空
document.getElementById("col1Text").focus();//使文本框获得焦点
}
}

李恒道 发表于 2023-2-3 18:22:15

window.onload是在初次加载执行
不是任何元素加载都执行
异步获取元素的脚本库 ElementGetter (更新至1.2.1)
https://bbs.tampermonkey.net.cn/thread-2726-1-1.html
(出处: 油猴中文网)

可以尝试下元素监听库

an_rural 发表于 2023-2-3 18:23:48

window.onload我百度好像应该换成MutationObserver,但这个函数我不会用。
不过,我绑定最后的保存按键,不需要加载对话框,只运行最后的清空文本框,也不运行是什么问题。

wwwwwllllk 发表于 2023-2-3 19:27:51

我觉得最外层加个setTimeout可能就好了

朱焱伟 发表于 2023-2-3 20:04:43

ElementGetter库属于在MutationObserver上的包装。

说到cxxjackie的这个ElementGetter库,我还希望它有一个**ESM**格式的npm包来方便在油猴**工程化**的时候使用。不过,到目前为止还没有其他老哥发。退而求其次,有(https://github.com/ryanmorr/ready)库,这个叫ready的元素监听库算是ElementGetter的**阉割**版,但提供了包括ESM版在内的npm包来方便引入。它也属于在MutationObserver上的包装。可以通过`npm install @ryanmorr/ready`来安装使用。用例:
```javascript
ready('.foo', function(element) { // do something });
```
其解释见(http://ryanmorr.com/using-mutation-observers-to-watch-for-element-availability/)
(算是题外话,这个好像没什么人需要用)

an_rural 发表于 2023-2-3 20:30:40

感谢大家关注,你们说的太高端,我需要消化一下再反馈。
不过,刚才我可能贴的不全,表达的不清楚。
现在我的问题分两步,一:简单的,就是点保存后,自动清空文本并获得焦点,为什么也不执行。
// ==UserScript==
// @name         Interlibaotuclick
// @namespace    http://tampermonkey.net/
// @version      0.1
// @descriptiontry to take over the world!
// @author       You
// @match      https://58.59.4.136:18080/interlib3/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=csdn.net
// @grant      none
// ==/UserScript==

var zjys=document.getElementById("dCheckDialog_save");//获取需要监听的按键
zjys.addEventListener.click=function()//点击此键运行
{
document.getElementById("col1Text").value=null;//获取待输入文本框,并清空
document.getElementById("col1Text").focus();//使文本框获得焦点
}



是不是最前面的部分不对?

李恒道 发表于 2023-2-3 21:31:36

an_rural 发表于 2023-2-3 20:30
感谢大家关注,你们说的太高端,我需要消化一下再反馈。
不过,刚才我可能贴的不全,表达的不清楚。
现在我 ...

这个别人没法判断的
只能靠你一边写一边debugger调试

李恒道 发表于 2023-2-3 21:33:01

朱焱伟 发表于 2023-2-3 20:04
ElementGetter库属于在MutationObserver上的包装。

说到cxxjackie的这个ElementGetter库,我还希望它 ...
工程化理论主要还不是建立的特别好...
之前本来想慢慢搞{:4_105:}
然后直接赶上新冠解封给我差点带走
mhsj又最近在重构脚本站
但是只要时间拉到无限长
迟早我们都能解决问题!

朱焱伟 发表于 2023-2-3 21:44:20

李恒道 发表于 2023-2-3 21:33
工程化理论主要还不是建立的特别好...
之前本来想慢慢搞
然后直接赶上新冠解封给我差点带走


教主归来之风云再起

李恒道 发表于 2023-2-3 21:51:54

朱焱伟 发表于 2023-2-3 21:44
教主归来之风云再起

叱吒风云我
任意闯
万众仰望.
叱吒风云我
绝不需
往后看~
页: [1] 2
查看完整版本: 纯新小白求助!