我们正在尝试将内置浏览器组件从TWebBrowser更改为TChromium。它主要用于显示谷歌和必应的地图。从javascript到Delphi的通信是用COM完成的。
当试图将浏览器更改为TChromium时,它无法编译此代码。
if supports(fBrowser.defaultInterface, IOleObject, fOLE) then因为defaultInterface从TChromium中消失了。
编辑:还可以用Chromium从javascript到Delphi进行通信吗?我知道它们是不兼容的,我必须重写代码。我只想知道如何从javascript到delphi获得结果。注意,我使用的是Delphi 2007,因此不能使用扩展的RTTI。
问候罗兰·本特松
发布于 2011-08-03 11:20:33
使用TChromium,您可以通过ExecuteJavaScript轻松地调用脚本。您还可以从脚本中调用Delphi代码,您可以使用脚本将返回值从JavaScript函数发送回Delphi。关于使用扩展执行此操作,请参见这个问题和我的答案。
像EexecuteScriptAndReturnValue这样的函数的工作似乎也在进行中,但在编写时,它们并不包含在主干中。
关于TWebBrowser.DefaultInterface,我同意Cosmin的观点:最好的类比可能是TChromium.Browser,因为您可以从那里访问框架和随后的DOM等等。
发布于 2011-07-27 11:47:22
我本人从未使用过它,但TChromium似乎是“Chromium浏览器的包装器”,而来自Delphi的原始TWebBrowser则是IE浏览器的包装器。
TWebBrowser.defaultInstance为您提供IE浏览器的COM对象。对于Chromium,显然可以使用TChromium.Browser,它为您提供了一个ICefBrowser类型的对象。TChromium人员不给属性命名defaultInstance是明智的,因为有很多代码从defaultInstance返回到其他接口类型:如果TChromium.Browser被命名为相同的,那么转换将在运行时编译并失败。因为IE浏览器显然不是Chrome浏览器,而且我怀疑Chromium完全实现了所有IE接口。
https://stackoverflow.com/questions/6843569
复制相似问题