TChromium.OnVirtualKeyboardRequested 是 ICefRenderHandler 的事件之一,该处理程序仅由浏览器在屏幕外模式(OSR 模式)下使用。
PopupBrowser2 演示使用正常模式(也称为“窗口模式”)的浏览器,这意味着不会触发任何 ICefRenderHandler 事件。
使用 PopupBrowser2,您将不得不使用名为 GlobalCEFApp.OnFocusedNodeChanged 的不同事件
检查 node.name 与 HTML 标记名称应该显示虚拟键盘,如 GlobalCEFApp.OnFocusedNodeChanged 中的“输入”或“文本区域”。
该事件在渲染进程中执行,您必须向主浏览器进程发送进程消息以显示键盘。
DOMVisitor 演示向您展示了如何在需要时发送带有一些参数的进程消息:
https ://github.com/salvadordf/CEF4Delphi/blob/132edb2e8895d998d3e3810982c95b9f845d78f8/demos/Delphi_VCL/DOMVisitor/uDOMVisitor.pas#L305
浏览器进程将在 TChromium.OnProcessMessageReceived 事件中收到该消息,如您在此处看到的:
https ://github.com/salvadordf/CEF4Delphi/blob/132edb2e8895d998d3e3810982c95b9f845d78f8/demos/Delphi_VCL/DOMVisitor/uDOMVisitor.pas#L432
请注意,TCefProcessMessageRef 是由具有名称的“New”函数创建的。当您在应用程序中实现 TChromium.OnProcessMessageReceived 时,您必须在处理之前比较 message.name 是否具有相同的名称值。