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

文章目录

    在 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 事件。