我有一个通过 JavaScriptCore 在 webkit-gtk 浏览器中扩展 JavaScript 的应用程序。现在我有几个类添加到全局上下文中,如下所示:
void create_js(gpointer context, char* className, JSClassDefinition clasDefinition) {
JSClassRef classDef = JSClassCreate(&clasDefinition);
JSObjectRef classObj = JSObjectMake(context, classDef, context);
JSObjectRef globalObj = JSContextGetGlobalObject(context);
JSStringRef str = JSStringCreateWithUTF8CString(className);
JSObjectSetProperty(context, globalObj, str, classObj, kJSPropertyAttributeNone, NULL);
JSStringRelease(str);
}
现在,我还想将这些类添加到 WebWorker 的上下文中,这样我就可以从 JS 中实例化的 worker 中调用它们。
我试过这样得到 Worker
对象:
JSStringRef workerStr = JSStringCreateWithUTF8CString("Worker");
JSObjectRef worker = JSObjectGetProperty(context, globalObj, workerStr, NULL);
JSObjectSetProperty(context, worker, str, classObj, kJSPropertyAttributeNone, NULL);
JSStringRelease(workerStr);
但是这会将它添加到 WorkerConstructor
对象中,当调用 new Worker()
时,这些类就不可用了。