javascript - 使用 JavaScript 以编程方式按下 Alt 0

标签 javascript

我想做的是运行一个选择测试框的脚本 (JS)。它的 ID 字段名称是 JMan。选择该字段后,我将尝试以编程方式让我的代码执行组合键 ALT+0,然后自行延迟 5 秒。顺便说一句,我在 IE 浏览器中执行此操作。

function myFunction() {
    var keyboardEvent = document.createEvent("keyboardEvent").;
    document.getElementById("JMan");
}
var keyboardEvent = document.createEvent("KeyboardEvent");
var initMethod = typeof keyboardEvent.initKeyboardEvent !== 'undefined' ? "initKeyboardEvent" : "initKeyEvent";


keyboardEvent[initMethod](
    "keydown", // event type : keydown, keyup, keypress
    true, // bubbles
    true, // cancelable
    window, // viewArg: should be window
    false, // ctrlKeyArg
    true, // altKeyArgenter code here
    false, // shiftKeyArg
    false, // metaKeyArg
    48, // keyCodeArg : unsigned long the virtual key code, else 0
    0 // charCodeArgs : unsigned long the Unicode character associated with the depressed key, else 0
);
document.dispatchEvent(keyboardEvent);

最佳答案

检测事件处理程序是一种检测 Alt-0 的简洁方法。你可能会考虑更复杂的检查来做一些事情,比如确定在 Alt 和 0 之间是否按下了另一个键(即这段代码将把 Alt-1-0 当作 Alt-0Ctrl-Alt-0 就好像它是 Alt-0)(至少它会检查您是否按住 Alt-0)。这主要是因为关键事件在浏览器之间有很大差异,我想做一些有希望在大多数人身上工作的东西。

此示例中的按钮会触发一个最小的“Alt-0”事件,该事件旨在让事件处理程序捕获(或者您应该能够在窗口中键入 Alt-0)。

function fireAlt0() {
    console.log("firing event");
    window.dispatchEvent(new KeyboardEvent("keydown", { key: "0", altKey: true }));
}

function detectAlt0(event) {
    if ("keydown" == event.type) { // we might want to use the same function for any of ( keydown, keypress, keyup ) events
        if (event.key == "0" && event.altKey && !event.repeat) {
            console.log("Open a window!");
        }
    }
}
    
window.addEventListener("DOMContentLoaded", function () {
    // Use keydown because keypress won't fire for the Alt-0 combination (since it doesn't produce a visible character)
    window.addEventListener("keydown", detectAlt0, false);
    document.getElementById("button").addEventListener("click", fireAlt0, false);
}, false);
<button id="button">fireAlt0</button>

关于javascript - 使用 JavaScript 以编程方式按下 Alt 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43143315/

相关文章:

javascript - JavaScript 是如何在 Google V8 中执行的,特别是 Canvas 相关代码

javascript - 解析错误消息 "react-dom.development.js:4091 Uncaught TypeError: onItemSelect is not a function"

javascript - 如何替换 iframe 的全部内容?

javascript - 每次点击时,文本都应添加到页面中

javascript - 使用jquery或Ajax将服务器上的目录hirerachy填充到多个html下拉列表

javascript - 可以编码 `if(($(document).onmouseup) && (value_ == 1))`吗?

javascript - 如何防止图表的nodeDataArray更新后所有组件的位置发生变化?

javascript - 将数字转换为最接近的 10 的倍数

javascript - 使用 ajax 在服务器端接收 json 时出错

javascript - 将选择器光标设置到 contenteditable div 中的新位置