Как использовать встроенные функции V8 - PullRequest
3 голосов
/ 12 марта 2010

Я новичок как в JavaScript, так и в V8. Согласно Руководству Google для Embedder, я видел кое-что в контекстном разделе , в котором говорится о встроенных функциях javascript. И я также нашел некоторые файлы .js (например, math.js) в загруженном исходном коде, поэтому я попытался написать простую программу для вызова функций в этих файлах, но мне не удалось.

  1. Имеет ли контекст, созданный Persistent<Context> context = Context::New(), какие-либо встроенные функции js? Как я могу получить к ним доступ?

  2. Есть ли способ сначала импортировать существующие файлы js в виде библиотеки (что-то вроде src = "xxx" type = "text / javascript" на странице HTML), а затем запустить собственный скрипт выполнения?

  3. Могу ли я вызвать Google Maps API через встроенную библиотеку V8 в приложении? Как?

Ответы [ 3 ]

1 голос
/ 13 марта 2010

3. Google Maps требуется полная DOM браузера (или, по крайней мере, запрос XMLHttpRequest), вы не можете использовать его только из библиотеки Javascript.

0 голосов
/ 04 июля 2012

Вы можете использовать, например, параметр --allow_natives_syntax или --expose_natives_as.
Вот примеры случайного выбора MathLog в src / math.js:

Сначала скомпилируйте оболочку с

$ scons d8 -j8

Тогда используйте --expose_natives_as:

$ ./d8 --expose_natives_as nat
V8 version 3.12.7 (candidate) [console: dumb]
d8> nat.MathLog(100)
4.605170185988092

или используйте --allow_natives_syntax с префиксом '%':

$ ./d8 --allow_natives_syntax
V8 version 3.12.7 (candidate) [console: dumb]
d8> %MathLog(100)
4.605170185988092
0 голосов
/ 23 января 2011

Я думаю, что v8 дает вам функции Math. * Бесплатно.

Вам нужно реализовать все остальное самостоятельно, например, загрузить другие файлы javascript. shell.cc имеет некоторые функции, которые вы можете искать.

Что касается API карт, я полагаю, что для этого вам понадобится полноценный движок рендеринга / движка JavaScript. Вам может быть лучше взглянуть на Webkit или что-то, что вы можете использовать для встраивания Webkit для того, что вы хотите сделать, я не могу сказать.

...