Создание глобальных объектов JavaScript в awesomium

Я пытаюсь спросить в чате Awesomium, но не получаю ответ. Так. Попробуем этот код:

JSObject jso1 = webView.CreateGlobalJavascriptObject("Super1");
JSObject jso2 = webView.CreateGlobalJavascriptObject("Super2");
webView.ExecuteJavascript("Super2 = function() { return 555; }");
JSValue val = webView.ExecuteJavascriptWithResult("Super2();");

если мы проследим его с помощью debuger, мы можем наблюдать, что jso2 еще не будет создан, но jso1 будет. Таким образом, val 2 никогда не устанавливается на 555.

Попробуем это:

webView.CreateGlobalJavascriptObject("Super1");
JSObject jso2 = webView.CreateGlobalJavascriptObject("Super2");
webView.ExecuteJavascript("Super2 = function() { return 555; }");
JSValue val = webView.ExecuteJavascriptWithResult("Super2();");

Super2 будет создан, но не будет назначен функции. val будет неопределенным (не 555).

против:

webView.CreateGlobalJavascriptObject("Super1");
webView.CreateGlobalJavascriptObject("Super2");
webView.ExecuteJavascript("Super2 = function() { return 555; }");
JSValue val = webView.ExecuteJavascriptWithResult("Super2();");

работает отлично! этот код создает два объекта и назначает функцию Super2 как функцию. val 555 после выполнения кода.

Так. Вопрос в том, кто не прав? Возможно, я понимаю, что я не понимаю принцип awesomium engine. Или это ошибка?

С уважением!

1
nl ja de
не рядом с VS, но я думаю, что проблема в том, что вы не используете JS Object так, как он определен, вы должны использовать метод bind на объекте jso2, чем вы можете его назвать. причина, по которой работает третий пример, заключается в том, что вы не отслеживаете глобальные объекты, что делает их доступными для GC, а метод Super2, который вы определили, является функцией в области окна V8, а не для объекта, который вы определили. вы можете протестировать его с помощью debuger, но опять же, здесь нет VS, поэтому я мог бы отключиться.
добавлено автор Nadav Ben-Gal, источник
Возможно, вы правы.
добавлено автор user1641423, источник
Но у меня нет времени, чтобы изучить awesomium. У меня есть выбор GeckoFX - его более «жирный», но «прозрачный», и у меня те же самые методы, с которыми я уже работал (тот же Ms WebBrowser). Но я хочу попробовать Chromium Embedded с помощью C ++. Я думаю, что это будет быстрее.
добавлено автор user1641423, источник
Microsoft Stack Jobs
Microsoft Stack Jobs
1 788 участник(ов)

Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks

Microsoft Developer Community Chat
Microsoft Developer Community Chat
584 участник(ов)

Чат для разработчиков и системных администраторов Microsoft Developer Community. __________ Новостной канал: @msdevru __________ Баним за: оскорбления, мат, рекламу, флуд, флейм, спам, NSFW контент, а также большое количество оффтоп тем. @banofbot