function
simulateKeyDown(keyCode) {
var event = new KeyboardEvent('keydown', {
bubbles: true,
cancelable: true,
keyCode: keyCode
});
document.dispatchEvent(event);
simulateKeyDown(65);
模拟键盘按键释放
:
使用
keyup
事件来模拟按键释放。
function simulateKeyUp(keyCode) {
var event = new KeyboardEvent('keyup', {
bubbles: true,
cancelable: true,
keyCode: keyCode
});
document.dispatchEvent(event);
simulateKeyUp(65);
模拟键盘按键输入
:
使用
keypress
或
input
事件来模拟按键输入。
function simulateKeyPress(char) {
var event = new KeyboardEvent('keypress', {
bubbles: true,
cancelable: true,
key: char
});
document.dispatchEvent(event);
simulateKeyPress('a');
模拟组合键操作
:
你可以在事件对象中设置
ctrlKey
、
altKey
、
shiftKey
和
metaKey
属性来模拟组合键。
function simulateCtrlA() {
var event = new KeyboardEvent('keydown', {
bubbles: true,
cancelable: true,
keyCode: 65,
ctrlKey: true
});
document.dispatchEvent(event);
document.dispatchEvent(new KeyboardEvent('keyup', { keyCode: 65, ctrlKey: false }));
simulateCtrlA();
模拟文本输入
:
使用
input
事件来模拟文本输入。
function simulateTextInput(text) {
var inputEvent = new Event('input', { bubbles: true });
var textArea = document.createElement('textarea');
textArea.value = text;
textArea.dispatchEvent(inputEvent);
simulateTextInput('Hello, world!');
模拟按键组合输入
:
你可以组合使用
keydown
、
keypress
和
keyup
事件来模拟完整的按键输入。
function simulateKeyCombination(key, modifier) {
var keyDownEvent = new KeyboardEvent('keydown', {
bubbles: true,
cancelable: true,
keyCode: key,
[modifier + 'Key']: true
});
var keyPressEvent = new KeyboardEvent('keypress', {
bubbles: true,
cancelable: true,
key: String.fromCharCode(key),
[modifier + 'Key']: true
});
var keyUpEvent = new KeyboardEvent('keyup', {
bubbles: true,
cancelable: true,
keyCode: key,
[modifier + 'Key']: false
});
document.dispatchEvent(keyDownEvent);
document.dispatchEvent(keyPressEvent);
document.dispatchEvent(keyUpEvent);
simulateKeyCombination(65, 'ctrl');
请注意,模拟键盘操作可能受到浏览器安全策略的限制,某些操作可能无法在所有浏览器中工作。此外,模拟键盘操作可能在某些情况下不被允许,特别是在
自动化测试
或与某些网站交互时。
2025-04-22 15:10:37【出处】:
https://blog.csdn.net/qq_42214739/article/details/141864301
=======================================================================================
js模拟键盘输入
const ke = new KeyboardEvent('keydown', {
bubbles: true, cancelable: true, keyCode: 13
document.body.dispatchEvent(ke);
上面的 keyCode 对应 十进制值
2025-04-22 15:17:15【出处】:
https://blog.csdn.net/geekswg/article/details/120246209
=======================================================================================
javascript模拟键盘按键事件,支持最新DOM3标准
打算在页面中自动填写账号密码,直接给
文本框
input元素赋值的方式无法触发键盘事件,导致数据不能提交(特殊的场景)。
所以改用javascript的模拟按键事件,但是
UIEvent.
initUIEvent和KeyboardEvent.initKeyEvent()等方法在最新的Chrome浏览器中已废弃。
按最新标准改用KeyboardEvent构造函数。
最新规范(www.w3.org/TR/DOM-Level-3-Events/)中已弃用KeyboardEvent.initKeyEvent()方法。因此,Chrome没不支持此类方法。
function fireKeyEvent(el, evtType, keyCode) {
var evtObj;
if (document.createEvent) {
if (window.KeyEvent) {//firefox 浏览器下模拟事件
evtObj = document.createEvent('KeyEvents');
evtObj.initKeyEvent(evtType, true, true, window, true, false, false, false, keyCode, 0);
} else {//chrome 浏览器下模拟事件
evtObj = document.createEvent('UIEvents');
evtObj.initUIEvent(evtType, true, true, window, 1);
delete evtObj.keyCode;
if (typeof evtObj.keyCode === "undefined") {//为了模拟keycode
Object.defineProperty(evtObj, "keyCode", { value: keyCode });
} else {
evtObj.key = String.fromCharCode(keyCode);
if (typeof evtObj.ctrlKey === 'undefined') {//为了模拟ctrl键
Object.defineProperty(evtObj, "ctrlKey", { value: true });
} else {
evtObj.ctrlKey = true;
el.dispatchEvent(evtObj);
} else if (document.createEventObject) {//IE 浏览器下模拟事件
evtObj = document.createEventObject();
evtObj.keyCode = keyCode
el.fireEvent('on' + evtType, evtObj);
<head>365codes.com</head>
<input id="input_username"></input>
</body>
<script type="text/javascript">
function fireKeyEvent(element, evtType, keyChar) {
element.focus();
var KeyboardEventInit = {key:keyChar, code:"", location:0, repeat:false, isComposing:false};
var evtObj = new KeyboardEvent(evtType, KeyboardEventInit);
element.dispatchEvent(evtObj);
var objInput = document.getElementById("input_username");
objInput.addEventListener('keydown', function (e) {
objInput.value += e.key;
}, false);
fireKeyEvent(objInput,"keydown","a");
</script>
</html>
参考标准文档:
键盘事件 KeyboardEvent() - Web API 接口参考 | MDN
特别提醒:代码触发按键事件不会导致该字母自动出现在文本框中,所以在监听keydown事件中增加了input元素赋值,为了UI显示而已。各家浏览器出于安全原因设定,来防止脚本模拟与浏览器本身交互的操作。
2025-04-23 11:46:40【出处】:
https://huayu.blog.csdn.net/article/details/108727693
=======================================================================================
如果,您认为阅读这篇博客让您有些收获,不妨点击一下右下角的
【
推荐
】
按钮。
如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的【
关注我
】。(●'◡'●)
因为,我的写作热情也离不开您的肯定与支持,感谢您的阅读,我是【
Jack_孟
】!
如果对你有所帮助,赞助一杯咖啡!打
付款后有任何问题请给我留言!!!
本文来自博客园,作者:
jack_Meng
,转载请注明原文链接:
https://www.cnblogs.com/mq0036/p/18840721
【免责声明】本文来自源于网络,如涉及版权或侵权问题,请及时联系我们,我们将第一时间删除或更改!