tampermonkey 触发 vuejs 网页中 input 控件的 v-model 双向同步

发布时间: 2018-10-19 23:17:40 作者: 大象笔记

在 tampermonkey 模拟自动提交数据

$('input[placeholder="text1"]')[0].value = 1;
$('input[placeholder="text2"]')[0].value = 2;
$('.submit .btn')[0].click();

运行之后,总是提示,没有填写数据。。。

看了一下页面中的 js,发现提交部分是用 vuejs 写的,input 的值存储在 vuejs data 的变量中。

理论上,input 是设置了 v-model 双向绑定,数据在填写之后会自动同步到 data 相应变量中。

所以,做了一下修改

$('input[placeholder="text1"]')[0].value = 1;
$('input[placeholder="text1"]')[0].dispatchEvent(new Event('input'));
$('input[placeholder="text2"]')[0].value = 2;
$('input[placeholder="text2"]')[0].dispatchEvent(new Event('input'));
$('.submit .btn')[0].click();

就可以了。

原因是,v-model 只不过是个语法糖,底层还是监听的 input 事件。

我是一名山东烟台的开发者,联系作者