上一主题 下一主题
ScriptCat,新一代的脚本管理器脚本站,与全世界分享你的用户脚本油猴脚本开发指南教程目录
12下一页
返回列表 发新帖

[油猴脚本开发指南]完善抖音脚本键盘事件

[复制链接]
  • TA的每日心情
    慵懒
    2024-10-28 07:07
  • 签到天数: 193 天

    [LV.7]常住居民III

    712

    主题

    5992

    回帖

    6780

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6780

    荣誉开发者喜迎中秋油中2周年生态建设者

    发表于 2022-2-1 21:54:20 | 显示全部楼层 | 阅读模式

    前文

    之前我们做过了抖音的视频提取脚本

    我们这节课可以实践一些键盘的事件监听

    为什么使用事件监听?

    因为我没事找事!

    开始

    首先我们想完成两个目标

    1.按键自动滚动到底部,并且返回到顶部

    2.按键自动全选所有视频,或取消所有视频

    先来做滚动吧

    首先我们假设监听Ctrl+方向下键以及Ctrl+A这两个快捷键作为功能触发按键

    unsafeWindow.addEventListener('keydown', (evt)=>{
        console.log('evt',evt);
    });

    我们先打印一下看看

    这里我选择在按下键的时候进行监听

    图片.png

    这里着重注意的就是keyCode,ctrlKey,shiftKey,altKey

    keyCode是我们按键的按键码,而ctrl,shift,alt,那三个键值,代表你按键的时候是否按了对应的功能键

    可以看到我按了Ctrl+↓的时候ctrlKey是true的

    然后是选择全部视频的按键,我突然想起来ctrl+a会选择页面全部文本

    所以临时更改为ctrl+z

    图片.png

    可以看到键码为90,所以这里我们可以开始写一下了

    unsafeWindow.addEventListener('keydown', (evt)=>{
        if(evt.ctrlKey){
            if(evt.keyCode==40){
            //开始设置滚轴
                JumpToBottom()
            }
                    if(evt.keyCode==90){
            //选择或取消全部视频
            }
        }
    });

    我们先写滚轴到下最后直接跳到顶部

    我们直接先写一下滚轴代码吧

    这里我用了setinterval循环,以及一个状态用来防止多次按键鼠标

    let jumprun=false;
    function JumpToBottom(){
        if(jumprun==true){
            return;
        }
        jumprun=true;
        let timer=setInterval(()=>{
            debugger;
            let bottomdiv=document.querySelector('.knrjsN15 .VxGqO7jM')
            if(bottomdiv!==null){
                if(bottomdiv.innerText==='暂时没有更多了'){
                    unsafeWindow.scrollTo(0,0)
                    jumprun=false;
                    clearInterval(timer)
                                return;
                }
            }
            unsafeWindow.scrollTo(0,document.body.scrollHeight)
        },300)
    
    }

    接下来我们来做选择全部的按键功能

    unsafeWindow.addEventListener('keydown', (evt)=>{
        if(evt.ctrlKey){
            if(evt.keyCode==40){
                //开始设置滚轴
                JumpToBottom()
            }
            if(evt.keyCode==90){
                //选择或取消全部视频
                SelectAllVideo()
            }
        }
    });

    我们直接获取视频数量,跟选中数量进行对比,然后判断选中全部还是取消全部

    最后模拟用户的选择状态,以及触发onclick函数

    代码如下

    function SelectAllVideo(){
        let alltarget=document.querySelectorAll('.control-pos input')
        let successnum=Object.keys(saveurl)
        let setstatus=false
        if(successnum.length===alltarget.length)
        {
            //取消全部
            setstatus=false
        }else{
            //选择全部
            setstatus=true;
        }
        alltarget.forEach((item)=>{
            item.checked=setstatus;
            item.parentElement.onclick()
        })
    
    }

    那么到这里我们就完成了抖音视频下载加强版!

    结语

    撒花~

    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
  • TA的每日心情
    慵懒
    2024-10-28 07:07
  • 签到天数: 193 天

    [LV.7]常住居民III

    712

    主题

    5992

    回帖

    6780

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6780

    荣誉开发者喜迎中秋油中2周年生态建设者

    发表于 2022-2-1 23:39:50 | 显示全部楼层
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-11-21 13:37
  • 签到天数: 213 天

    [LV.7]常住居民III

    305

    主题

    4215

    回帖

    4073

    积分

    管理员

    积分
    4073

    管理员荣誉开发者油中2周年生态建设者喜迎中秋油中3周年挑战者 lv2

    发表于 2022-2-1 23:50:36 | 显示全部楼层
    ggnb!
    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    前天 15:11
  • 签到天数: 537 天

    [LV.9]以坛为家II

    148

    主题

    420

    回帖

    1219

    积分

    版主

    积分
    1219

    油中2周年生态建设者

    发表于 2022-2-3 22:52:59 | 显示全部楼层
    道总yyds
    I don't hate programming but the fucking world.
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    昨天 13:27
  • 签到天数: 784 天

    [LV.10]以坛为家III

    77

    主题

    523

    回帖

    881

    积分

    专家

    脚本猫首席体验官

    积分
    881

    油中2周年生态建设者新人报道油中3周年挑战者 lv2喜迎中秋

    发表于 2022-2-17 21:44:33 | 显示全部楼层
    ggnb!
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    昨天 13:27
  • 签到天数: 784 天

    [LV.10]以坛为家III

    77

    主题

    523

    回帖

    881

    积分

    专家

    脚本猫首席体验官

    积分
    881

    油中2周年生态建设者新人报道油中3周年挑战者 lv2喜迎中秋

    发表于 2022-4-29 17:08:42 | 显示全部楼层
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    昨天 13:27
  • 签到天数: 784 天

    [LV.10]以坛为家III

    77

    主题

    523

    回帖

    881

    积分

    专家

    脚本猫首席体验官

    积分
    881

    油中2周年生态建设者新人报道油中3周年挑战者 lv2喜迎中秋

    发表于 2022-4-30 12:48:49 | 显示全部楼层
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    昨天 13:27
  • 签到天数: 784 天

    [LV.10]以坛为家III

    77

    主题

    523

    回帖

    881

    积分

    专家

    脚本猫首席体验官

    积分
    881

    油中2周年生态建设者新人报道油中3周年挑战者 lv2喜迎中秋

    发表于 2022-5-1 09:28:40 | 显示全部楼层
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    昨天 13:27
  • 签到天数: 784 天

    [LV.10]以坛为家III

    77

    主题

    523

    回帖

    881

    积分

    专家

    脚本猫首席体验官

    积分
    881

    油中2周年生态建设者新人报道油中3周年挑战者 lv2喜迎中秋

    发表于 2022-5-2 20:43:17 | 显示全部楼层
    回复

    使用道具 举报

  • TA的每日心情

    2022-9-11 21:38
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    1

    主题

    6

    回帖

    7

    积分

    助理工程师

    积分
    7

    新人报道

    发表于 2022-5-31 19:15:16 | 显示全部楼层
    ggyyds!
    回复

    使用道具 举报

    发表回复

    本版积分规则

    快速回复 返回顶部 返回列表