在JavaScriptCore中的WebWorker上下文中添加一个新的本机类
我有一个在webkit-gtk浏览器中通过JavaScriptCore扩展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()
被调用时,这些类不可用。