Saya memiliki aplikasi yang memperluas JavaScript melalui JavaScriptCore, di browser webkit-gtk. Saat ini saya memiliki beberapa kelas yang saya tambahkan ke konteks global seperti:
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);
}
Sekarang, saya juga ingin menambahkan kelas-kelas itu ke konteks WebWorker, jadi saya bisa memanggilnya dari pekerja yang dibuat di JS.
Saya sudah mencoba mendapatkan Worker
objek seperti ini:
JSStringRef workerStr = JSStringCreateWithUTF8CString("Worker");
JSObjectRef worker = JSObjectGetProperty(context, globalObj, workerStr, NULL);
JSObjectSetProperty(context, worker, str, classObj, kJSPropertyAttributeNone, NULL);
JSStringRelease(workerStr);
Tapi itu menambahkannya ke WorkerConstructor
objek, dan ketika a new Worker()
dipanggil, kelas tidak tersedia.
javascript
webkit
customization
web-worker
javascriptcore
Pedro Vanzella
sumber
sumber
Worker
definisi kelas. Biasanya Anda perlu menambahkan kelas Anda ke objek Global dan ke setiap Objek Global dalam JSVirtualMachine yang baru dibuat.Worker
akan membuat baruJSVirtualMachine
dengan konteks global dan objek globalnya; lingkungan yang benar-benar terpisahJawaban:
Tidak ada cara untuk mengubah
WorkerGlobalScope
atau cakupan / konteks yang sebanding sebelum pekerja web dimulai di sebagian besar penerapan browser umum. Cakupan ini menjadi tersedia hanya untuk konteks pekerja web segera setelah pekerja web spesifik ini diluncurkan.Satu-satunya cara untuk menggunakan metode bersama adalah dengan mendefinisikannya dalam file / sumber daya bersama yang terpisah dan memasukkannya menggunakan
importScripts()
Sumber
sumber
Gunakan "importScripts ()" untuk berbagi sumber daya dengan WorkerGlobalScope
sumber