如何在禁用JavaScript的TEdgeBrowser中捕获OnKeyDown事件
关于TEdgeBrowser禁用脚本时捕获键盘事件的问题
已实现的JS注入捕获方案
我了解可以通过注入onkeydown JavaScript事件到HTML,并利用Web消息返回按键码的方法:
EdgeBrowser.ExecuteScript("window.onkeydown = function(ev) { window.chrome.webview.postMessage(ev.keyCode); };");
随后在TEdgeBrowser的OnWebMessageReceived事件中从Args参数获取按键码:
procedure TfrmMain.EdgeBrowserWebMessageReceived(Sender: TCustomEdgeBrowser; Args: TWebMessageReceivedEventArgs); begin // parse received WebMessage end;
但问题是当SettingsInterface.Set_IsScriptEnabled设为false时,上述JavaScript事件会失效。
核心疑问
是否存在无需使用上述JS技术即可在TEdgeBrowser中捕获键盘事件的方法?
已尝试但无效的方法
- 将TForm的
KeyPreview设为true后使用其OnKeyDown事件 - 通过
ApplicationEvents的OnMessage处理WM_KEYDOWN和WM_KEYUP消息
内容的提问来源于stack exchange,提问作者Coder12345
相关产品推荐
相关产品推荐

