我们正在尝试将内置浏览器组件从 TWebBrowser 更改为 TChromium 。 它主要用于显示 Google 和 Bing 的 map 。从 javascript 到 Delphi 的通信是通过 COM 完成的。
当尝试将浏览器更改为 TChromium 时,无法编译此代码。
if supports(fBrowser.defaultInterface, IOleObject, fOLE) then
因为 TChromium 中缺少 defaultInterface。
编辑: 是否仍然可以使用 Chromium 从 javascript 到 Delphi 进行通信? 我知道它们不兼容,我必须重写代码。我只是想知道如何从 javascript 获取结果到 delphi。注意,我使用的是 Delphi 2007,因此无法使用扩展 RTTI。
问候 罗兰·本特森
最佳答案
我自己从未使用过它,但 TChromium
似乎是“Chromium”网络浏览器的包装器,而来自 Delphi 的原始 TWebBrowser
是 IE 的包装器浏览器。
TWebBrowser.defaultInstance
为您提供 IE 浏览器的 COM 对象。对于 Chromium 浏览器,您显然可以使用 TChromium.Browser
,它为您提供一个 ICefBrowser
类型的对象。 TChromium
人员很聪明,没有将属性命名为 defaultInstance
,因为有很多代码从 defaultInstance
的返回转换为其他接口(interface)类型:如果 TChromium.Browser
命名相同,则转换将编译并在运行时失败。因为IE浏览器显然不是Chrome浏览器,而且我怀疑Chromium浏览器是否完全实现了IE的所有接口(interface)。
关于delphi - TChromium 中的默认界面缺失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6843569/