js自动模拟用户键盘输入/自动触发输入事件/自动触发input事件

起因:Chrome扩展的时候,input 框自动填写内容后,无法触发表单的提交,需要出发input事件。

解决方式: 参考 https://blog.csdn.net/weixin_42649856/article/details/128582733 的解决办法。

代码:

javascript 复制代码
// 获取 input 输入框的dom对象
var element_input = window.document.querySelector('input');

// JavaScript 中的 `_valuetracker` 方法常常用于监听 HTML 表单元素(如 input,select,textarea 等)的值变化,并在每次值发生变化时执行回调函数。
if(element_input._valueTracker) var _templMethod = element_input._valueTracker.getValue;
if(element_input.getValue) var _templMethod = element_input.getValue;
if(element_input._valueTracker) element_input._valueTracker.getValue = () => '';

// 修改input的值
element_input.value = '123';

// 设置输入框的 input 事件
var event = new InputEvent('input', {
   'bubbles': true,		// 表示事件对象是否冒泡
   'cancelable': true,	// 表示事件是否可以被取消,即能否用Event.preventDefault()取消这个事件。
});
// 触发 dom 对象的 input 事件
element_input.dispatchEvent(event);

// 将`_valuetracker`的值(方法)重新绑定
if(element_input._valueTracker) element_input._valueTracker.getValue = _templMethod;

直接用上面代码就可以。

注意: 如果获取不到 _valuetracker 的话,直接用下面的代码也是可以的,我就遇见到无法获取 _valuetracker 的情况

javascript 复制代码
// 获取 input 输入框的dom对象
var element_input = window.document.querySelector('input');

// 修改input的值
element_input.value = '123';

// 设置输入框的 input 事件
var event = new InputEvent('input', {
   'bubbles': true,		// 表示事件对象是否冒泡
   'cancelable': true,	// 表示事件是否可以被取消,即能否用Event.preventDefault()取消这个事件。
});
// 触发 dom 对象的 input 事件
element_input.dispatchEvent(event);
相关推荐
whoarethenext3 分钟前
使用 C++ 和 OpenCV 构建智能答题卡识别系统
开发语言·c++·opencv
张童瑶10 分钟前
Vue Electron 使用来给若依系统打包成exe程序,出现登录成功但是不跳转页面(已解决)
javascript·vue.js·electron
火柴就是我22 分钟前
每日见闻之<script type="module"> 的含义与作用
javascript
m0_5164846726 分钟前
C#winform多选框代码
开发语言·c#
1024小神33 分钟前
在rust中执行命令行输出中文乱码解决办法
前端·javascript
*小雪1 小时前
vue2使用vue-cli脚手架搭建打包加密方法-JavaScript obfuscator
前端·javascript·vue.js
CnLiang1 小时前
fnm无缝切换项目的pnpm和node脚本化实践
前端·javascript
ze_juejin1 小时前
JavaScript类型之Symbol
javascript
q567315231 小时前
Java使用Selenium反爬虫优化方案
java·开发语言·分布式·爬虫·selenium
程序猿小D2 小时前
第26节 Node.js 事件
服务器·前端·javascript·node.js·编辑器·ecmascript·vim