0

公司这里有一个chrome扩展组件,主要功能是微信公众平台网站自动填写账号密码(因为有很多个账号),
基本就是
$("input[name=account]").val(account);
$("input[type=password]").val(password);
这样的代码,之前是正常,今天突然不行了,必须手动输入,否则报错“你还没有输入帐号!”
自动填写后,手动随便输入一个字再删掉这个字再点登录的话,就会正常
猜测是需要出发什么事件,但是我看了两个input上绑定的事件
然后我试着
$("input[name=account]").blur();
$("input[tnamepe=account]").keydown();
$("input[name=account]").change();
也试过
$("input[name=account]").trigger('blur');
$("input[name=account]").trigger('keydown');
$("input[name=account]").trigger('change');
$("input[name=account]").trigger('input');
$("input[name=account]").trigger('validate-ok');
都没有用

求教如何模拟输入触发对应事件
或者我看了下它这边似乎是用的seajs加载实例化vue对象,我在chrome扩展组件这里怎么写能获取这个对象?

1个回答

0

其实原因就是微信的登录页面使用了vue框架,直接写入input值不会触发双向绑定数据更新。
用原生js创建input事件在指定input元素上触发可以触发其双向绑定事件。

function trigger(el, type) {
    var e = document.createEvent('HTMLEvents');
    e.initEvent(type, true, true);
    el.dispatchEvent(e);
}
trigger(input元素(注意是原生对象,不是jq对象,可以通过jq对象的[0]来获取), 'input');

撰写答案