WebView2当前能否接收键盘输入?如何从WPF端向其发送击键事件?
WebView2 软键盘击键发送实现方案
- 版本适配说明
你当前使用的1.0.818.41属于WebView2早期版本,该版本确实未公开原生输入事件发送接口。等价于CefSharpChromiumWebBrowser.GetHost().SendKeyEvent()的功能,已经在1.0.1020.30及之后的稳定版本正式上线。 - 官方原生实现方案
升级WebView2 NuGet包到1.0.1020.30或更高版本后,使用CoreWebView2.SendInput()方法即可实现需求:- 监听网页输入框焦点状态:可通过
CoreWebView2.ContainsFocusChanged事件,或注入JS监听输入框focus/blur事件,触发OnScreenKeyboard的显示和隐藏 - 构造键盘事件:软键盘触发按键操作时,构造对应参数的
CoreWebView2KeyEvent结构体 - 发送事件:调用
CoreWebView2.SendInput()方法,将构造好的键盘事件直接发送到WebView2渲染的网页上下文,即可触发输入框内容输入
- 监听网页输入框焦点状态:可通过
- 低版本兼容方案
若暂时无法升级WebView2版本,可通过JS注入间接实现输入功能:
软键盘触发输入后,调用CoreWebView2.ExecuteScriptAsync()执行JS代码,主动修改当前焦点输入框的value属性,同时手动触发input、change事件,即可保证网页原有逻辑正常响应输入内容。
内容的提问来源于stack exchange,提问作者Bado
相关产品推荐
相关产品推荐

