我正在使用https://github.com/salvadordf/CEF4Delphi中的CEF4Delphi,我正在编辑PopupBrowser2示例。有一个Chromium1组件。我已经添加了事件,它应该在请求键盘时通知:
procedure TForm1.Chromium1VirtualKeyboardRequested(Sender: TObject; const browser: ICefBrowser;
input_mode: TCefTextInpuMode);
begin
caption := 'kbd';
end;不幸的是,当example加载google页面时,我点击了搜索编辑框,事件没有被调用。如何创建要调用的事件?
发布于 2020-05-08 14:54:49
TChromium.OnVirtualKeyboardRequested是ICefRenderHandler的事件之一,该处理程序仅在离屏模式(OSR模式)下由浏览器使用。
PopupBrowser2演示程序在正常模式下使用浏览器(也称为“窗口模式”),这意味着不会触发任何ICefRenderHandler事件。
对于PopupBrowser2,您必须使用一个名为GlobalCEFApp.OnFocusedNodeChanged的不同事件
检查带有HTML标记名的node.name,它应该在GlobalCEFApp.OnFocusedNodeChanged中显示虚拟键盘,如"input“或"textarea”。
该事件在呈现进程中执行,您必须向主浏览器进程发送一条进程消息以显示键盘。
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是否具有相同的name值。
https://stackoverflow.com/questions/61607632
复制相似问题