可以发现:当直接修改输入框的 value
属性不会触发一些框架(如 React、Vue 等)或自定义事件所依赖的输入变化检测。这意味着虽然你看到输入框的值改变了,但在后台或框架管理的状态中,输入框的值可能并没有更新。由上述这个情况会造成生成过程中的用户值出现问题。
因此需要解决上述问题,所以尝试使用第一种方法,但是失败了,
触发原生的 input
和 change
事件
除了设置 value
属性,还需要手动触发 input
和 change
事件。这些事件告诉网页的前端框架输入值已经发生了变化,并且需要将这个变化传递给后台。
随后便使用第二种方法
使用 setNativeValue 填充输入框
可以将所输入的内容直接填入相关的地段,通过创建一个 setNativeValue
函数来模拟用户的输入,从而更新框架的内部状态。
遇到的原始情况:
// ==UserScript==
// @name 示例脚本:模拟点击
// @namespace http://tampermonkey.net/
// @version 0.1
// @description 尝试自动点击ID为myButton的按钮
// @author
// @match
// @grant unsafewindow
// @require http://libs.baidu.com/jquery/2.0.0/jquery.min.js
// @require https://cdn.bootcdn.net/ajax/libs/artDialog/7.0.0/dialog.js
// @grant GM_log
// @grant GM_registerMenuCommand
// @grant GM_getValue
// @grant GM_setValue
// @grant GM_deleteValue
// @license MIT
// ==/UserScript=