网页自动化模拟操作时,模拟真实按键触发事件【终级方案】

Element UI + Vue 深度绑定的输入框 ,普通的事件触发全是假的 ,框架只认 **「原生真实键盘输入事件」

普通 方法都只是模拟表面,没有模拟 真人敲键盘的底层事件 **,所以必须用硬核方案


🔥 终极解决方案(针对 input 专属代码)

模拟真人鼠标点击 + 键盘输入的完整代码,框架 100% 识别:

javascript 复制代码
// 1. 严格用你指定的选择器(第二个 input.d-text)
const input = document.querySelectorAll("input.d-text")[1];

// 2. 你要赋值的内容(自己改)
const value = "这里填你要输入的内容";

// 3. 模拟真人完整操作(核心!Vue/ElementUI 唯一认的方式)
function setInputValue(el, val) {
    // 模拟鼠标聚焦(你手动点的那一下)
    el.focus();
    
    // 赋值
    el.value = val;

    // ✅ 关键:触发【原生键盘事件】(框架双向绑定的核心)
    const event = new Event('input', {
        bubbles: true,
        cancelable: true
    });
    // 强制触发原生输入事件(最底层)
    el.dispatchEvent(event);
    
    // 额外触发 Vue/React 必须的合成事件
    el.dispatchEvent(new Event('change', { bubbles: true }));
    el.dispatchEvent(new Event('blur', { bubbles: true }));
}

// 执行赋值
setInputValue(input, value);

🚀 还不行?用【无敌兜底版】(模拟真实键盘敲击)

如果上面还不行,说明网页强制监听键盘按键 ,直接模拟每一个字符的键盘输入,这是所有网页都无法拦截的终极方法:

javascript 复制代码
// 你的固定选择器
const input = document.querySelectorAll("input.d-text")[1];
// 要赋值的内容
const text = "你的内容";

// 模拟真实键盘输入(无敌版)
input.focus();
input.value = '';
let idx = 0;
const type = () => {
    if(idx < text.length){
        input.value += text[idx++];
        input.dispatchEvent(new Event('input',{bubbles:true}));
        setTimeout(type,10);
    } else {
        input.blur();
    }
}
type();

🎯 为什么之前全部失败?

  1. 用的是 Vue + Element UI 输入框,双向绑定机制极严格
  2. 它不监听 value 变化,只监听 原生键盘输入事件
  3. 普通的 dispatchEvent(new Event("input"))伪造事件,框架直接忽略
  4. 必须模拟 真实的 focus + 原生 input 事件 + 冒泡 才会生效

如果这个代码还不行,你砍我!这是前端处理这类问题的最终标准答案

更多源码见 https://wangpanmao.com

相关推荐
程序员黑豆10 小时前
Java 注释详解:单行、多行与文档注释的完整指南
java·前端·ai编程
剪刀石头布啊10 小时前
antd中可编辑表格中巧用useWatch实现联动高性能效果,以及定制延伸学习
前端
油丶酸萝卜别吃11 小时前
前端转全栈学习路线
前端·学习
浮生望11 小时前
前端路由进阶:History API原理与手写HistoryRouter
前端
陆枫Larry12 小时前
JavaScript 中的竞态是什么,为啥会有竟态?
前端
独隅13 小时前
GitHub Actions 自动化运维实战:CI/CD 流水线一体化效果展示
运维·自动化·github
上海安当技术14 小时前
半天接入:USBKey RESTful API + C 动态库,Web 和 C/S 两套集成路径实战
前端·后端·restful·集成·usbkey
DevUI团队14 小时前
从“即兴创作”到“规格先行”,华为云码道(CodeArts)代码智能体持续深耕企业级规范驱动开发能力
前端·人工智能·后端
weixin_4316004415 小时前
NestJS 入门(3):Guard 如何挡住未登录请求?
前端·后端·学习·nest.js
avi911115 小时前
[AI教做人]AI平台做2项目;一个3D模型展示,另一个框架多人
javascript·人工智能·ai·3d模型·3d引擎·顶点和法线