添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
function




    
 simulateKeyDown(keyCode) {
  var event = new KeyboardEvent('keydown', {
    bubbles: true,
    cancelable: true,
    keyCode: keyCode
  });
  document.dispatchEvent(event);
simulateKeyDown(65); // 模拟按下 'A' 键
  • 模拟键盘按键释放
    使用 keyup 事件来模拟按键释放。
  • function simulateKeyUp(keyCode) {
      var event = new KeyboardEvent('keyup', {
        bubbles: true,
        cancelable: true,
        keyCode: keyCode
      });
      document.dispatchEvent(event);
    simulateKeyUp(65); // 模拟释放 'A' 键
  • 模拟键盘按键输入
    使用 keypress input 事件来模拟按键输入。
  • function simulateKeyPress(char) {
      var event = new KeyboardEvent('keypress', {
        bubbles: true,
        cancelable: true,
        key: char
      });
      document.dispatchEvent(event);
    simulateKeyPress('a'); // 模拟按下 'a' 键
  • 模拟组合键操作
    你可以在事件对象中设置 ctrlKey altKey shiftKey metaKey 属性来模拟组合键。
  • function simulateCtrlA() {
      var event = new KeyboardEvent('keydown', {
        bubbles: true,
        cancelable: true,
        keyCode: 65, // 'A' 键的 keyCode
        ctrlKey: true
      });
      document.dispatchEvent(event);
      document.dispatchEvent(new KeyboardEvent('keyup', { keyCode: 65, ctrlKey: false }));
    simulateCtrlA(); // 模拟按下 Ctrl+A
  • 模拟文本输入
    使用 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'); // 模拟 Ctrl+A

    请注意,模拟键盘操作可能受到浏览器安全策略的限制,某些操作可能无法在所有浏览器中工作。此外,模拟键盘操作可能在某些情况下不被允许,特别是在 自动化测试 或与某些网站交互时。

    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

    【免责声明】本文来自源于网络,如涉及版权或侵权问题,请及时联系我们,我们将第一时间删除或更改!