问题
通常我们编写脚本时会涉及到用户输入字符的操作。对于大部分网站来说,使用的都是input
或者一些用contenteditable=true
这种属性来完成用户的输入。
然而,网站通常会在用户输入时进行一些JS操作。因此,在JS脚本中,如果单纯地在input
里面填入文字,它不会触发网站的JS操作。查询资料后,得知可以通过EventTarget.dispatchEvent
来重新初始化事件。这样,在脚本填入文字时就能触发网站原本的操作了。
代码解决
以下是whatApp聊天输入框的捕获代码:
//获取输入框DOM元素
let list = document.querySelectorAll("div.selectable-text"); list[list.length - 1];
//new 一个动作事件设置冒泡事件来触发他的动作
let event = new Event('input',{bubbles:true});
list[list.length - 1].append("1234");
list[list.length - 1].dispatchEvent(event);
//点击触发,让它冒泡一下
list[list.length - 1].click()
评论区