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

为什么模拟事件没有反应

[复制链接]

该用户从未签到

1

主题

1

回帖

19

积分

助理工程师

积分
19
发表于 2022-2-12 17:44:52 | 显示全部楼层 | 阅读模式
悬赏1油猫币未解决

想写一个自动打字的脚本 www.monkeytype.com

image.png

我想模拟键盘的输入,就是这个input事件

这是网站的源码

image.png

//我在浏览器里执行了这些代码, 改了addEventListener的回调函数,想模拟一次input事件,
const oldAddEv = window.EventTarget.prototype.addEventListener;
window.EventTarget.prototype.addEventListener = function (topic, callback) {
    const callbackOld = arguments[1];
    arguments[1] = function (e) {
        console.log("callback execute")
        return callbackOld.apply(this, e)
    }
    return oldAddEv.apply(this, arguments);
};
let ipt = document.querySelector("#wordsInput")
let input = new Event("input")
ipt.dispatchEvent(input)

image.png

发现并没有打印“callback execute"

本人JS小白,菜的一批,希望大佬们帮我看看怎么回事

  • TA的每日心情
    慵懒
    2024-10-28 07:07
  • 签到天数: 193 天

    [LV.7]常住居民III

    712

    主题

    5961

    回帖

    6760

    积分

    管理员

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

    积分
    6760

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

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

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

    使用道具 举报

    该用户从未签到

    1

    主题

    1

    回帖

    19

    积分

    助理工程师

    积分
    19
    发表于 2022-2-13 11:07:29 | 显示全部楼层
    剩下的体力活
    1. let f = function (c){
    2.     let wordsInput = document.querySelector("#wordsInput")
    3.     let func = $._data(wordsInput).events.input[0].handler
    4.     let inputEvent = {
    5.         originalEvent: new Proxy(new InputEvent({data: c}), {
    6.             get: function(target, property){
    7.                 if( property == "isTrusted"){
    8.                     return true;
    9.                 }else{
    10.                     return Reflect.get(target, property)
    11.                 }
    12.             }
    13.         }),
    14.         target:{
    15.             value:{
    16.                 normalize: function(){
    17.                     return " "+ c
    18.                 }
    19.             }
    20.         }
    21.     }
    22.     func(inputEvent)
    23. }
    24. arr = []
    25. function getNextWord(letters){
    26.     let s = " "
    27.     letters.forEach((item1)=>{
    28.         s += item1.innerText
    29.     })
    30.     s += " "
    31.     arr.push(s)
    32. }
    33. (function getInitialWords(){
    34.     let words = document.querySelectorAll(".word")
    35.     words.forEach((item)=>{
    36.         let letters = item.querySelectorAll("letter")
    37.         getNextWord(letters)
    38.     })
    39. })()
    40. function final(count){
    41.     count = (1 / (count / 60.0)) * 1000
    42.     console.log(count)
    43.     i = 0
    44.     setInterval(function(){
    45.         f(arr[i++])
    46.         if(i > 1){
    47.             words = document.querySelectorAll(".word")
    48.             let lastword = words[words.length - 1]
    49.             let letters = lastword.querySelectorAll("letter")
    50.             getNextWord(letters)
    51.         }
    52.     }, count)
    53. }
    54. //一分钟打多少个字
    55. final(100)
    复制代码
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-10-28 07:07
  • 签到天数: 193 天

    [LV.7]常住居民III

    712

    主题

    5961

    回帖

    6760

    积分

    管理员

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

    积分
    6760

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

    发表于 2022-2-13 14:39:02 | 显示全部楼层

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

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

    使用道具 举报

    发表回复

    本版积分规则

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