Tengo una aplicación que extiende JavaScript a través de JavaScriptCore, en un navegador webkit-gtk. En este momento tengo varias clases que agrego al contexto global así:
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);
}
Ahora, me gustaría agregar también esas clases al contexto de WebWorker, para poder llamarlas desde los trabajadores instanciados en JS.
Intenté obtener el Worker
objeto así:
JSStringRef workerStr = JSStringCreateWithUTF8CString("Worker");
JSObjectRef worker = JSObjectGetProperty(context, globalObj, workerStr, NULL);
JSObjectSetProperty(context, worker, str, classObj, kJSPropertyAttributeNone, NULL);
JSStringRelease(workerStr);
Pero eso lo agrega al WorkerConstructor
objeto, y cuando new Worker()
se llama a, las clases no están disponibles.
javascript
webkit
customization
web-worker
javascriptcore
Pedro Vanzella
fuente
fuente
Worker
la definición de clase. Normalmente, debe agregar su clase al objeto Global y a cada Objeto Global dentro de una nueva JSVirtualMachine creada.Worker
creará un nuevoJSVirtualMachine
con su contexto global y objeto global; un entorno totalmente separadoRespuestas:
No hay forma de modificar los
WorkerGlobalScope
ámbitos o contextos comparables antes de que se inicie un trabajador web en las implementaciones de navegador más comunes. Estos ámbitos están disponibles solo para el contexto de los trabajadores web tan pronto como se inicia este trabajador web específico.La única forma de usar métodos compartidos es definirlos en un archivo / recurso compartido separado e incluirlos usando
importScripts()
Fuentes
fuente
Utilice "importScripts ()" para compartir los recursos con WorkerGlobalScope
fuente