WebKit2Gtk中的JavaScriptCore与C?

WebKit2Gtk中的JavaScriptCore与C?,javascript,c,webkit,gtk,webkit2,Javascript,C,Webkit,Gtk,Webkit2,我很难让JavaScriptCore与WebKit2Gtk一起工作。在我的C应用程序中,我使用WebKit2Gtk作为我希望能够访问C函数的应用程序的前端 WebKitGtk(不是WebKit2版本)有几个例子。然而,在邮件列表中,有一些信息由于WebKit2Gtk的线程性质而变得更加复杂。不幸的是,我没有找到任何例子 我在加载回调中编写了以下代码: JSGlobalContextRef jsContext = webkit_web_view_get_javascript_global_cont

我很难让JavaScriptCore与WebKit2Gtk一起工作。在我的C应用程序中,我使用WebKit2Gtk作为我希望能够访问C函数的应用程序的前端

WebKitGtk(不是WebKit2版本)有几个例子。然而,在邮件列表中,有一些信息由于WebKit2Gtk的线程性质而变得更加复杂。不幸的是,我没有找到任何例子

我在加载回调中编写了以下代码:

JSGlobalContextRef jsContext = webkit_web_view_get_javascript_global_context
                                           (WEBKIT_WEB_VIEW(gtk_webview));

JSEvaluateScript(jsContext,JSStringCreateWithUTF8CString
                      ("$('#debuginfo').html('JS API OK')"),0,0,0,0);
不幸的是,WebKit2Gtk中完全没有发生任何事情。但是,如果我使用API文档中定义的新函数并执行以下操作,我将获得所需的输出

webkit_web_view_run_javascript(WEBKIT_WEB_VIEW(gtk_webview),
                "$('#debuginfo').html('JS API OK')",NULL,NULL,NULL);
带有runjavascript函数的新API可以快速执行JS代码,但我希望允许WebKit2Gtk中的JS代码执行JS中的函数,我可以在我的C代码中处理这些函数


期待您的帮助,因为我有点被这件事困住了,在回到WebKitGtk之前(不是WebKit2Gtk版本,而是以前的版本),我很快想看看你们是否知道如何实现它。

WebKitGTK版本1是一个单一的进程,它允许您监听信号,并将全局javascript上下文和javascript对象获取到全局上下文

WebKitGTK版本2是多进程的,因此从创建WebKitWebView对象的同一进程获取全局javascript上下文将不再有效,因为javascript是在另一个进程中计算的。为了实现这一点,您必须创建一个()来支持您的WebKitWebView实例

当您调用
webkit\u web\u view\u run\u javascript
时,它在您的情况下工作的可能原因是您的javascript对象仅在当前过程中创建和评估