V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
975779964
V2EX  ›  程序员

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

  •  
  •   975779964 · 39 天前 · 964 次点击
    这是一个创建于 39 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题 ,我在 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 事件啊? 点是 正常用鼠标点 下一页 是可以 翻页的 ,我应该如何 用代码来模拟 下一页的点击呢?

    10 条回复    2021-10-20 09:01:03 +08:00
    975779964
        1
    975779964   39 天前
    啊……我真蠢 ,微信读书 默认 自带的 左右方向键就可以 翻页了 ,我还 傻傻的 模拟 button 点击 ,都怪 surfingkeys 把 默认快捷键给我屏蔽了 ……
    zxxufo008
        2
    zxxufo008   39 天前
    你说的是翻页还是下一章啊
    zxxufo008
        3
    zxxufo008   39 天前
    @975779964 起始更好的是 page up page down
    975779964
        4
    975779964   39 天前
    @zxxufo008 我要的是 翻下一页呢,就是你用网页版微信的时候 ,拉到最底下,有个 下一页按钮 的 ,一章里面 有很多页 ,pgup pgdn 只是 网页 的 上下滚动 ,不是我要的效果 , 我刚发现 微信读书 的 方向键 左右 也只是 切换 上 /下 章 而已 ,翻页 的功能 还是没有 ,想要 用 js 模拟 点击 下一页 按钮 却不能实现 ……
    975779964
        5
    975779964   39 天前
    @zxxufo008 现在的核心问题是 为什么 有的 dom 元素 (比如微信读书的 下一页按钮 ,目录按钮 ) 调用 js 的 .click() 方法 (js 模拟点击) 不生效
    zxxufo008
        6
    zxxufo008   39 天前
    @975779964 我看的都是网文,还真没看到网页版里有下一页的按钮。你打开 f12 看下呗
    975779964
        7
    975779964   39 天前
    @zxxufo008 比如说这本书 https://weread.qq.com/web/reader/73532150723f022f73516a6,他是有下一页的 ,你看看呢 ,有 下一页的按钮 (和下一章是不同的) ,我就是按 f12 然后 知道 这个按钮 的 class 是 readerFooter_button,通过 document.getElementsByClassName('readerFooter_button') 找到 他 ,然后 调用 .click() 事件模拟点击 没有用 才来问的
    chnwillliu
        8
    chnwillliu   38 天前   ❤️ 1
    因为在事件处理中他判断了事件是否有 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
        9
    chnwillliu   38 天前   ❤️ 1
    额 getElementsByClassName 返回的是数组,改成 querySelector

    document.querySelector('.readerFooter_button').dispatchEvent(clickEvent);
    975779964
        10
    975779964   38 天前
    @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 方法
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2261 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 11:20 · PVG 19:20 · LAX 03:20 · JFK 06:20
    ♥ Do have faith in what you're doing.