如果您的应用程序中有一个 chromium 嵌入式 Web 浏览器小部件,是否有办法通知应用程序在任何时间点发生了某些事情?例如,假设调整了一个项目的大小或单击了一个按钮,并且它是一个基于 javascript 的页面加载到 chromium 嵌入式小部件中。您如何通过代码通知 C++ 或 Delphi 应用程序(或任何应用程序)并向其发送消息或回调?我正在寻找类似 sendMessage 功能的东西,以便将发生的事情反馈给应用程序。
如何执行此操作的示例可以使用 C++、.Net 或 Delphi 或任何语言...因为我可以简单地将代码移植到我的 Delphi 语言。
换句话说,您如何从 javascript 与其中包含 chromium 嵌入式 Web 浏览器的应用程序进行通信?页面加载完成后,您可以通过发生的页面加载结束事件进行通信...但是,即使在页面加载后,javascript 代码也往往会运行,尤其是当用户使用鼠标在页面上拖动项目或单击时一个按钮..那么你如何随时与C++/Delphi应用程序沟通,发生了什么事?
仅供引用,可以完全访问 html/java 代码,即我可以在 javascript 中添加我自己的代码……任何我想要的代码。因此,如果有类似 sendMessageBackToApp 的内容,那么我想添加它。
如果此功能不可用,它肯定会有用。应用程序和 javascipt/html 之间的通信对于应用程序真正强大是必不可少的。
最佳答案
Chromium GuiClient 演示的以下添加对我适用于 D7:
procedure TMainForm.TestJS;
begin
if crm.Browser <> nil then
crm.Browser.MainFrame.ExecuteJavaScript(
'alert(''JavaScript execute works!''); console.log(''From Javascript'')', 'about:blank', 0);
end;
procedure TMainForm.crmConsoleMessage(Sender: TObject; const browser:
ICefBrowser; const message, source: ustring; line: Integer; out Result:
Boolean);
begin
ShowMessage('OnConsoleMessage: ' + Message);
Result := True;
end;
请参阅此处以获得更全面的讨论:https://groups.google.com/forum/#!topic/delphichromiumembedded/uDxAUTvXqzc
关于c# - 使用 Chromium Embedded 有没有办法从 Javascript 与程序通信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40068310/