webcast-chatroom___textarea
webcast-chatroom___limit
webcast-chatroom___send-btn
var ele = document.getElementsByClassName("webcast-chatroom___textarea")[0];
var ele = document.getElementsByClassName("webcast-chatroom___textarea")[0];
ele.focus();
ele.value="ok";
var event = new Event('keyup');
event.keyCode = 32;
document.dispatchEvent(event);
var dom = document.querySelector(".webcast-chatroom___textarea");
var evt = new InputEvent('input', {
inputType: 'insertText',
data: 'abc',
dataTransfer: null,
isComposing: false
});
dom.value = 'abc';
dom.dispatchEvent(evt);
var dom = document.querySelector('.webcast-chatroom___textarea')
var evt = new UIEvent('input', {
bubbles: false,
cancelable: false
});
dom.value = 'bcd';
dom.dispatchEvent(evt);
// 模拟键盘向下按键
const downEvt = new KeyboardEvent('keydown', {
bubbles: true, cancelable: true, keyCode: 40,
})
// 模拟键盘回车按键
const enterEvt = new KeyboardEvent('keydown', {
bubbles: true, cancelable: true, keyCode: 13,
})
// 普通输入事件
const inputEvt = new InputEvent('input', {
inputType: 'insertText',
data: 1,
dataTransfer: null,
isComposing: false,
})
// 遍历处理textarea框
const inputEvt = new InputEvent('input', {
inputType: 'insertText',
data: 1,
dataTransfer: null,
isComposing: false,
})
const inpEle = document.querySelector('.webcast-chatroom___textarea')
inpEle.value = 1
inpEle.dispatchEvent(inputEvt)
// 设置发送信息
var inpEle = document.querySelector('.webcast-chatroom___textarea')
inpEle.value = 'AAAA' //仅仅是模拟回车,则不需要这样,这样给input框设置值也是不生效的,正确给input设置值的方式参考上面的
// 模拟回车
var event = document.createEvent('Event')
event.initEvent('keydown', true, false) //注意这块触发的是keydown事件,在awx的ui源码中bind监控的是keypress事件,所以这块要改成keypress
event = Object.assign(event, {
ctrlKey: false,
metaKey: false,
altKey: false,
which: 13,
keyCode: 13,
key: 'Enter',
code: 'Enter'
})
inpEle.focus()
inpEle.dispatchEvent(event)
===================================================================================
这种适合被框架劫持setter事件,比如react vue
function changInputValue(inputDom,newText){
let lastValue = inputDom.value;
inputDom.value = newText;
let event = new Event('input', { bubbles: true });
event.simulated = true;
let tracker = inputDom._valueTracker;
if (tracker) {
tracker.setValue(lastValue);
}
inputDom.dispatchEvent(event);
}
//使用方法
var userIdDom = document.getElementById('userId'); //普通JS获取输入框Dom
changeReactInputValue(userIdDom,'username'); //改变React的输入框的值
==================================================================================
//使用方法
var inputDom = document.querySelector('.webcast-chatroom___textarea'); //普通JS获取输入框Dom
var newText = '不要讲abc啦,听不懂';
let lastValue = inputDom.value;
inputDom.value = newText;
let event = new Event('input', { bubbles: true });
event.simulated = true;
let tracker = inputDom._valueTracker;
if (tracker) {
tracker.setValue(lastValue);
}
inputDom.dispatchEvent(event);
var btn = document.querySelector('.webcast-chatroom___send-btn');
btn.click();