To simulate a key press event in JavaScript programmatically, you can use the `KeyboardEvent` constructor to create a new event and then dispatch it. Here's how you can do this:
1. Create and initialize a `KeyboardEvent`.
2. Dispatch the event to the desired element.
Here's an example of how to simulate a key press event for the "Enter" key (`keyCode` 13) after the page loads:
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Simulate Key Press</title>
<script>
window.onload = function() {
// Function to simulate a key press
function simulateKeyPress(keyCode) {
const event = new KeyboardEvent('keydown', {
key: keyCode, // Use 'key' instead of 'keyCode'
keyCode: keyCode, // Deprecated but still in use for compatibility
code: `Key${keyCode}`, // Provide a valid 'code'
which: keyCode,
charCode: keyCode,
bubbles: true
});
document.dispatchEvent(event);
}
// Add event listener to respond to key press
document.addEventListener('keydown', function(event) {
console.log(`Key pressed: ${event.key}`);
// Add your custom function or code here
customFunction(event.key);
});
// Call the function to simulate a key press
simulateKeyPress('Enter'); // Simulate pressing the "Enter" key
};
function customFunction(key) {
// Custom functionality based on the key pressed
alert(`You pressed the "${key}" key!`);
}
</script>
</head>
<body>
<h1>Simulating a key press after the page loads</h1>
</body>
</html>
```
In this example:
- The `simulateKeyPress` function creates a `KeyboardEvent` with the specified key code.
- The event is then dispatched to the document, simulating a key press.
- The `keydown` event listener reacts to the simulated key press by calling `customFunction`.
Note: While `keyCode` is used in this example for simplicity and backward compatibility, it's technically deprecated. You should use the `key` and `code` properties where possible for modern applications. Adjust the `key`, `keyCode`, and `code` properties in `simulateKeyPress` to simulate different keys as needed.