Skip to content

[Problem/Bug]: Ctrl+P Shortcut not being passed to webview2 hosted javascript console #5551

@poynting-dev

Description

@poynting-dev

What happened?

I need to intercept Ctrl+P in JavaScript inside a WebView2-hosted component.

In Microsoft Edge, my keydown handler detects Ctrl+P correctly, but in WebView2 the onkeydown event never captures this shortcut. Instead, WebView2 opens the built-in print preview directly.

I want to capture Ctrl+P in JavaScript so I can override or prevent the default print behavior.

Importance

Important. My app's user experience is significantly compromised.

Runtime Channel

Stable release (WebView2 Runtime)

Runtime Version

146.0.3856.72

SDK Version

1.0.3296.44

Framework

WPF

Operating System

Windows 11

OS Version

10.0.26100.8037

Repro steps

Following example i am using to capture CTrl+P. this example works pretty well in Edge browser, but not in Webview2 hosted component.

`function handleKeyboardEvent(event) {
const key = (event.key || "").toLowerCase();
const isP = key === "p" || event.code === "KeyP" || event.keyCode === 80;
if(event.keyCode === 80) {
console.log("Key code 80 was detected");
console.log("event.keyCode: " + event.keyCode);
console.log("event.keyCode type: " + typeof (event.keyCode));
} else if(key === "p") {
console.log("Key 'P' was pressed");
console.log("event.keyCode: " + event.keyCode);
console.log("event.keyCode type: " + typeof (event.keyCode));
} else if(event.code === "KeyP") {
console.log("Key code 'KeyP' was detected");
console.log("event.keyCode: " + event.keyCode);
console.log("event.keyCode type: " + typeof (event.keyCode));
}
const isPrintShortcut = event.ctrlKey && isP; // matches Ctrl+P and Ctrl+Shift+P

if(isPrintShortcut) {
console.log("Print will " + (isPrintShortcut ? "happen" : "not happen"));
}
}

// Register once
document.addEventListener("keydown", handleKeyboardEvent, true);`

Repros in Edge Browser

No, issue does not reproduce in the corresponding Edge version

Regression

No, this never worked

Last working version (if regression)

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions