Skip welcome & menu and move to editor
Welcome to JS Bin
Load cached copy from
 
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>JS Bin</title>
</head>
<body>
  <h2>click to trigger synthetic event</h2>
  <button id="theButton">original</button>
  <button id="withKeyboardEvent">with KeyboardEvent</button>
  <button id="withPlainEvent">with plain Event</button>
  
  <div style="width: 100%; background: green; color: white; font-style: bold; margin-top: 20px; padding: 4px;" id="theFeedback"></div>
</body>
</html>
 
document.getElementById("theFeedback").innerHTML = "waiting...";
document.getElementById("theFeedback").addEventListener("keydown", (event) => {
  console.log("KEYDOWN CAPTURED", event);
  let str = "";
  ["code", "charCode", "keyCode", "key", "which", "altKey", "ctrlKey", "shiftKey"].forEach((k) => {
    console.log("str", str);
    str += `${k} = ${event[k]}<br>`;
  });
  document.getElementById("theFeedback").innerHTML = str;
});
document.getElementById("theButton").addEventListener("click", () => {
  console.log("CLICK ORIGINAL");
  let keyEvent = new KeyboardEvent("keydown", { keyCode: 61, altKey: false, shiftKey: false, key: "q" });
  document.getElementById("theFeedback").dispatchEvent(keyEvent);
});
document.getElementById("withKeyboardEvent").addEventListener("click", () => {
  console.log("CLICK KeyboardEvent");
  let keyEvent = document.createEvent("KeyboardEvent");
  let initMethod = typeof keyEvent.initKeyboardEvent !== 'undefined' ? "initKeyboardEvent" : "initKeyEvent";
  keyEvent[initMethod](
                       "keydown",
                        true,      // bubbles oOooOOo0
                        true,      // cancelable   
                        window,    // view
                        false,     // ctrlKeyArg
                        false,     // altKeyArg
                        false,     // shiftKeyArg
                        false,     // metaKeyArg
                        61,  
                        0          // charCode   
    );
  document.getElementById("theFeedback").dispatchEvent(keyEvent);
});
document.getElementById("withPlainEvent").addEventListener("click", () => {
  console.log("CLICK withPlainEvent");
  let keyEvent = document.createEventObject ?
        document.createEventObject() : document.createEvent("Events");
  
    if(keyEvent.initEvent){
      keyEvent.initEvent("keydown", true, true);
    }
  
    keyEvent.keyCode = 61;
    keyEvent.which = 61;
    
    document.dispatchEvent ? document.dispatchEvent(keyEvent) :     
                             document.fireEvent("onkeydown", keyEvent); 
  document.getElementById("theFeedback").dispatchEvent(keyEvent);
});
Output

You can jump to the latest bin by adding /latest to your URL

Dismiss x
public
Bin info
anonymouspro
0viewers