首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DCEF4虚拟键盘未显示

DCEF4虚拟键盘未显示
EN

Stack Overflow用户
提问于 2020-05-05 15:09:25
回答 1查看 247关注 0票数 1

我正在使用https://github.com/salvadordf/CEF4Delphi中的CEF4Delphi,我正在编辑PopupBrowser2示例。有一个Chromium1组件。我已经添加了事件,它应该在请求键盘时通知:

代码语言:javascript
复制
procedure TForm1.Chromium1VirtualKeyboardRequested(Sender: TObject; const browser: ICefBrowser;
  input_mode: TCefTextInpuMode);
begin
   caption := 'kbd';
end;

不幸的是,当example加载google页面时,我点击了搜索编辑框,事件没有被调用。如何创建要调用的事件?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61607632

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档