首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TEdgeBrowser组件:从运行在嵌入式网页上的脚本调用本机代码

TEdgeBrowser组件:从运行在嵌入式网页上的脚本调用本机代码
EN

Stack Overflow用户
提问于 2020-06-15 14:49:28
回答 1查看 1.7K关注 0票数 7

目前我们使用TWebBrowser组件将IE嵌入到我们的桌面应用程序中。为了从运行在嵌入式浏览器中的脚本调用Delphi代码,我们实现了对window.external对象的支持,如下所述:http://www.delphidabbler.com/articles/article-22

现在,由于许多原因,我们需要切换到现代浏览器。我们已经升级到Delphi10.4,它引入了新的TEdgeBrowser组件(基于铬的MS Edge )。是否可以将window.external也用于TEdgeBrowser?如果是这样的话,是怎么做的?或者,有没有其他方法可以从嵌入式浏览器中的脚本调用本机代码?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-06 23:56:49

最后,它非常简单。感谢TOndrej的“入门”链接,它帮助我解决了这个问题。我还意识到它可以与MS Edge Beta (84.0.522.28)一起使用,所以不需要Marco Cantu在这里描述的金丝雀:https://blog.marcocantu.com/blog/2020-may-edge-browser-component.html。我希望它能很快和官方的MS Edge一起工作。以下是一些代码片段:

Delphi:

代码语言:javascript
复制
procedure TForm1.Button1Click(Sender: TObject);
begin
  EdgeBrowser1.Navigate(ExtractFilePath(ParamStr(0))  + 'index.html');
end;

procedure TForm1.EdgeBrowser1WebMessageReceived(Sender: TCustomEdgeBrowser; Args: TWebMessageReceivedEventArgs);
var
  Msg: PChar;
begin
  Args.ArgsInterface.Get_webMessageAsJson(Msg);
  MessageBox(Handle, Msg, PChar(EmptyStr), MB_OK);
end;

HTML:

代码语言:javascript
复制
<!DOCTYPE html>
<html>
<body>
    <p onclick="handleClick()">Click me</p>
    <script>
        function handleClick() {
            window.chrome.webview.postMessage({ data: 'Message from Edge Chromium', url: window.document.URL });
        }
    </script>
</body>
</html> 

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

https://stackoverflow.com/questions/62382813

复制
相关文章

相似问题

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