求助在控制台向目标文本框输入内容正常,但是放在脚本里没反应
本帖最后由 kfab 于 2023-8-29 11:09 编辑> 本帖最后由 kfab 于 2023-8-29 09:54 编辑
https://github.com/hectorqin/reader
上有个类似手机阅读3.0的项目,布置服务器,网页访问服务器阅读抓取小说。
在阅读页面点击文本会弹出对话框是否添加入过滤规则,但是由于常常不想替换时点击了页面,就会弹出对话框。
好在可以在设置里设置不弹出,但是这样的话在需要替换的时候,就要进入设置页面,滑动到最底端才可以点击过滤,然后再在弹出的界面里再点击下新增,才可以看到需要的添加过滤的界面。
这样就太繁琐了,于是就想通过脚本直接调出这个添加过滤的界面,通过一些努力成功调出了该界面,接下来需要的操作是:
1.在该页面的第一个文框输出选中时自动复制的文本内容
2.在该页面的第二个文本框输出选中时自动复制的文本内容
3.激活该页面的第三个文本框
4.鼠标移动到确定按钮上,但不点击
结果第一步就遇到了问题,顺利找到第一个文本框
div.el-form-item:nth-of-type(1) > .el-form-item__content > .el-input > .el-input__inner
之后,在控制台测试在该文本框输出内容是没问题的,如下图
!(data/attachment/forum/202308/29/093033crykrwymkgon5rik.jpg)
但是放到脚本里
document.querySelector("div.el-form-item:nth-of-type(1) > .el-form-item__content > .el-input > .el-input__inner").value = "测试";
执行后,发现该界面的第一个文本框里仍然显示默认的“文本替换”,而不显示输入的“测试”,如下图
!(data/attachment/forum/202308/29/093331zly1wtveyqetbr8f.jpg)
后来测试发现,第一次执行脚本不输入,但是关闭该界面后,执行第二次脚本就又显示了,如图
!(data/attachment/forum/202308/29/093525a0wa00ewj9i5wc12.jpg)
这个好奇怪啊,请哥哥们帮忙看看是怎么回事。
后来我添加了另一个功能,ALT+F,进入搜索界面,这时脚本却可以正常向该界面的文本框输入文本,但是前面的ALT+R进入规则替换(二级)界面却需要按ALT+R两次,执行两次才可以输入文本。问题在哪?
另: 怎么使用document.execCommand('paste'); 或者其他方法,在文本框输入已经复制好的内容?
修改后的脚本
```
// ==UserScript==
// @name reader
// @namespace https://bbs.tampermonkey.net.cn/
// @version 0.1.0
// @descriptionreader页面alt+r 把选中的文本添加进【新增替换规则】界面
// @descriptionreader页面alt+f 把选中的文本添加进【搜索】界面
// @author 五味子
// @include http://192.168.1.2:8080/#/reader
// ==/UserScript==
function replace() {
'use strict';
var r = window.event.keyCode
var f = window.event.keyCode
if (r == 82 && event.altKey) //按下 r键+alt键
{
//复制选中内容
document.execCommand('Copy');
//点击【新增规则】
document.querySelector("div.el-dialog__wrapper:nth-of-type(5) > .el-dialog > .el-dialog__footer > .dialog-footer > div > button.el-button--medium.el-button--primary.float-left.el-button:nth-of-type(3) > span").click()
//在【名称】文本框输入
document.querySelector("div.el-form-item:nth-of-type(1) > .el-form-item__content > .el-input > .el-input__inner").value = "测试";
}
if (f == 70 && event.altKey) //按下 f键+alt键
{
//复制选中内容
document.execCommand('Copy');
//点击【搜索】
document.querySelector("div.float-btn:nth-of-type(2) > .el-icon-search").click()
//在【名称】文本框输入
document.querySelector(".el-input--prefix.el-input--mini.el-input.search-input > .el-input__inner").value = "测试";
}
}
document.onkeydown = replace; //当按下按键时,onkeydown调用
document.onkeydown = search; //当按下按键时,onkeydown调用
``` 没测试网站不好排查问题
但是根据你的描述来看很可能是弹窗还没渲染直接开始搜寻了
控制台没有报错吗
加个settimeout加大延迟试试 李恒道 发表于 2023-8-29 09:40
没测试网站不好排查问题
但是根据你的描述来看很可能是弹窗还没渲染直接开始搜寻了
试了,直接不弹出界面了,应该是我settimeout写的不对。
按两次ATL+R也可以接受,我已经放弃治疗了{:4_108:}
哥哥能说下怎么在文本框输出复制好的内容吗 kfab 发表于 2023-8-29 12:41
试了,直接不弹出界面了,应该是我settimeout写的不对。
按两次ATL+R也可以接受,我已经放弃治疗了
click之后再settimeout试试
提取clip目前好像没什么特别好的办法....
@王一之 不知道知不知道 kfab 发表于 2023-8-29 12:41
试了,直接不弹出界面了,应该是我settimeout写的不对。
按两次ATL+R也可以接受,我已经放弃治疗了
https://blog.csdn.net/qq_36658051/article/details/107908422
看看这个
页:
[1]