Подтвердить что ты не робот

Как я могу использовать интерпретатор JavaScript Google Chrome V8 от Delphi?

Я хотел бы встроить интерпретатор V8 JavaScript, который поставляется с Google Chrome в моем приложении Delphi. Я знаю, что хром встроенный проект с открытым исходным кодом от Google, но я хотел бы знать, знал ли кто-нибудь о любом Pascal/Обертки Delphi?

Существует пример проекта, включенного в zip файл на связанном мной сайте, который написан на С++. Если ничего другого, я буду медленно и мучительно работать, чтобы преобразовать его.

UPDATE:
Я просто хочу встроить интерпретатор JavaScript V8, а не браузер Chromium.

4b9b3361

Ответ 1

Для справки: hgourvest разместил Delphi Chromium Embedded в Google Code.

Редактировать 2013-01-15:

Другой проект того же автора, на этот раз обернувший CEF3: DCEF3

Ответ 2

Наиболее идеальным решением было бы создание обертки, предпочтительно, которая потребляет исходный источник без изменений, и скомпилировать эту оболочку в OBJ файл (используя С++), который затем связан с Delphi, где другая "обертка" предоставляет механизм через более стандартный синтаксис паскаля объекта. Тогда этот подход позволил бы вносить изменения в движок без необходимости полного преобразования каждый раз при добавлении новой функциональности или дополнительной производительности. Единственным недостатком этого подхода является то, что при навигации по слоям будет потеряна какая-то производительность... но я ожидаю, что она будет минимальной.

Ответ 3

Если на самом деле Chrome является браузером, который вы хотите внедрить в свое приложение, вы должны проверить Google Chrome Frame, он раскрывает COM, в первую очередь для интеграции в Internet Explorer, но теоретически мы также должны иметь доступ к ним.

(Я не уверен, потому что я хотел бы пойти на это сам, но это на длинный список очень аккуратных вещей, чтобы попытаться, когда я их обойду.) Обновление. Я быстро перешел к нему, получил ошибку "Без интерфейса" и разместил его здесь.

Ответ 4

Ответ 5

Я также использовал мост SpiderMonkey без каких-либо проблем. Работает достаточно быстро, без огромного объема и еще не имеет проблем с Unicode!

Ответ 6

Начнем с 1 июня 2016 года. v8delphiwrapper, наград разработчику @zolagiggszhou. И я хотел бы показать вам пример кода:

Запустите js-код и верните результат как string:

Memo2.Text := FEngine.eval(Memo1.Text);

Доступ к объекту Delphi из js:

1 - Предполагая, что у вас есть класс Delphi:

  TJsAccessableClass = class
  public
    function add(a,b: Double): Double;
    function httpEncode(const s: string): string;
  end;

2 - Вы регистрируете его с помощью двигателя v8 js:

  FObjectTemplate2 := FEngine.RegisterRttiClass(TJsAccessableClass);
  FJsAccessableObject := FObjectTemplate2.CreateInstance(TJsAccessableClass.Create);
  Fv8GlobalObject.SetObject('delphiObj', FJsAccessableObject);

3 - Теперь вы можете вызвать свой метод Delphi из js:

var s = delphiObj.httpEncode('/~!f234');

Очень круто! Еще один пример: проект образца v8delphiwrapper