Интерфейс по умолчанию в TChromium отсутствует - PullRequest
2 голосов
/ 27 июля 2011

Мы пытаемся изменить компонент встроенного браузера с TWebBrowser на TChromium .Он используется в основном для отображения карт от Google и Bing.Связь от javascript до Delphi осуществляется с помощью COM.

При попытке изменить браузер на TChromium не удается скомпилировать этот код.

if supports(fBrowser.defaultInterface, IOleObject, fOLE) then

, так как в TChromium отсутствует defaultInterface.

РЕДАКТИРОВАТЬ: Можно ли по-прежнему общаться с Javascript для Delphi с Chromium?Я знаю, что они не совместимы, и я должен переписать код.Я просто хочу знать, как получить результат от JavaScript до Delphi.Примечание. Я использую Delphi 2007, поэтому нельзя использовать расширенный RTTI.

С уважением, Роланд Бенгтссон

Ответы [ 2 ]

5 голосов
/ 27 июля 2011

Я никогда не использовал его сам, но TChromium представляется оберткой для веб-браузера "Chromium", в то время как оригинальный TWebBrowser от Delphi является оберткой вокруг браузера IE.

TWebBrowser.defaultInstance дает вам объект COM браузера IE. Для браузера Chromium вы, очевидно, можете использовать TChromium.Browser, он дает вам объект типа ICefBrowser. TChromium люди были умны, чтобы не называть свойство defaultInstance, потому что есть много кода, приведенного от возврата defaultInstance к другим типам интерфейса: если TChromium.Browser был назван так же, приведение скомпилировалось сбой во время выполнения. Поскольку браузер IE, очевидно, не является браузером Chrome, и я сомневаюсь, что браузер Chromium полностью реализует все интерфейсы IE.

1 голос
/ 03 августа 2011

Используя TChromium, вы можете легко вызывать скрипты через ExecuteJavaScript. И вы можете вызывать код Delphi из сценариев, которые можно использовать для отправки возвращаемых значений обратно из функции JavaScript в Delphi. См. этот вопрос и мой ответ о том, как сделать это с помощью расширений.

Похоже, что для таких функций, как EexecuteScriptAndReturnValue, идет работа, но на момент написания они не содержатся в транке.

И в отношении TWebBrowser.DefaultInterface Я согласен с Cosmin: лучшая аналогия, вероятно, TChromium.Browser, поскольку вы можете получить доступ к кадрам, а затем к DOM и т. Д. Оттуда.

...