微信读书网页版如何 模拟 点击 下一页 按钮 ?

2021-10-18 21:19:09 +08:00
 975779964

如题 ,我在 chrome 上面用微信读书 ,用了 surfingkeys 插件 ,按 f 模拟点击 下一页按钮 没有反应,然后我又在 设置里面 设置 快捷键

mapkey('<Space>','微信读书下一页',()=>{
    let btn = document.getElementsByClassName('readerFooter_button');
    console.log(btn[0]);
    btn[0].click(); 
},{domain:/weread\.qq/i});

打印出来了 下一页按钮 ,但 就是 click() 事件没有反应 我在 chrome devtools 里面 也试了 不行 ,是不是 微信读书 的下一页按钮 就 没有 写 onClick 事件啊? 点是 正常用鼠标点 下一页 是可以 翻页的 ,我应该如何 用代码来模拟 下一页的点击呢?

2351 次点击
所在节点    程序员
12 条回复
975779964
2021-10-18 22:10:16 +08:00
啊……我真蠢 ,微信读书 默认 自带的 左右方向键就可以 翻页了 ,我还 傻傻的 模拟 button 点击 ,都怪 surfingkeys 把 默认快捷键给我屏蔽了 ……
zxxufo008
2021-10-19 16:43:53 +08:00
你说的是翻页还是下一章啊
zxxufo008
2021-10-19 16:44:23 +08:00
@975779964 起始更好的是 page up page down
975779964
2021-10-19 17:43:37 +08:00
@zxxufo008 我要的是 翻下一页呢,就是你用网页版微信的时候 ,拉到最底下,有个 下一页按钮 的 ,一章里面 有很多页 ,pgup pgdn 只是 网页 的 上下滚动 ,不是我要的效果 , 我刚发现 微信读书 的 方向键 左右 也只是 切换 上 /下 章 而已 ,翻页 的功能 还是没有 ,想要 用 js 模拟 点击 下一页 按钮 却不能实现 ……
975779964
2021-10-19 17:45:06 +08:00
@zxxufo008 现在的核心问题是 为什么 有的 dom 元素 (比如微信读书的 下一页按钮 ,目录按钮 ) 调用 js 的 .click() 方法 (js 模拟点击) 不生效
zxxufo008
2021-10-19 18:01:31 +08:00
@975779964 我看的都是网文,还真没看到网页版里有下一页的按钮。你打开 f12 看下呗
975779964
2021-10-19 19:07:48 +08:00
@zxxufo008 比如说这本书 https://weread.qq.com/web/reader/73532150723f022f73516a6,他是有下一页的 ,你看看呢 ,有 下一页的按钮 (和下一章是不同的) ,我就是按 f12 然后 知道 这个按钮 的 class 是 readerFooter_button,通过 document.getElementsByClassName('readerFooter_button') 找到 他 ,然后 调用 .click() 事件模拟点击 没有用 才来问的
chnwillliu
2021-10-20 07:16:45 +08:00
因为在事件处理中他判断了事件是否有 clientX,没有的话就不执行后续动作了。

```js
var clickEvent = document.createEvent('mouseevent');
clickEvent.initMouseEvent('click', true, false, window, null, 100, 100, 100, 100);
document.getElementsByClassName('readerFooter_button').dispatchEvent(clickEvent);
```

这样就好啦。
chnwillliu
2021-10-20 07:18:04 +08:00
额 getElementsByClassName 返回的是数组,改成 querySelector

document.querySelector('.readerFooter_button').dispatchEvent(clickEvent);
975779964
2021-10-20 09:01:03 +08:00
@chnwillliu 哇, 可以了 ,原来是 调用 dispatchEvent 不是 .click() ,谢谢 大佬 现在我的代码 是这样
```
mapkey('<Space>','微信读书下一页',()=>{
let clickEvent = document.createEvent('mouseevent');
clickEvent.initMouseEvent('click', true, false, window, null, 100, 100, 100, 100);
let btn= document.querySelector('.readerFooter_button');
btn.dispatchEvent(clickEvent)

},{domain:/weread\.qq/i});

```
下次我要是元素点不动了,就用 这个 dispatchEvent 方法
Tesla9527
355 天前
按空格键好像也可以翻页(一章里面的很多页)
abc123I
286 天前
@975779964 哈哈哈,我他妈,也是想解决鼠标点点点的问题来着,看到你这,才发现竟然有快捷键,我真蠢+1

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/808630

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX