2012-08-08 21 views
9

Sé que los trabajadores de la web no pueden acceder al dom directamente. Pero, ¿sería una mala idea para hacer algo como esto:Pasar el documento objeto a un trabajador web

var doc = $(document); 

var worker = new Worker("worker.js"); 

worker.postMessage({ cmd: 'doDomStuff', data: doc }); 

, ¿existen otras desventajas con este pedazo de código?

Cualquier consejo/comentario es muy apreciado.

actualización: Para que quede claro: solo quiero obtener datos del DOM, no establecer nuevos valores ni manipular el DOM de ninguna manera.

+1

En otros idiomas, el único hilo para manipular la interfaz de usuario es el hilo que lo creó (Pienso específicamente en .Net, Java y otros, pero podría hacerlo también). A menos que los navegadores manejen las cosas de manera diferente, esta es probablemente la razón por la cual los trabajadores de la web no tienen acceso natural al DOM. –

+1

@CoreyOgburn Consulte mi actualización – Johan

+2

. Suena como algo bastante fácil de probar. –

Respuesta

6

No veo ninguna razón por la que no se puede hacer esto, pero esto podría dar lugar a problemas cuando se está tratando de manipular el mismo elemento en el trabajador y en el código principal js, al mismo tiempo .

Debería agregar algo de bloqueo mutex a su código.

Lo sentimos rayar la anterior ...


Trabajadores hacer NO tienen acceso a:

El DOM (que no es seguro para subprocesos)
El objeto de la ventana
El objeto de documento
El objeto principal

Source

+3

Sé que el trabajador no tiene acceso directo al DOM, por eso estoy tratando de pasarlo como un objeto. Olvidé mencionar que no tenía la intención de manipularlo en el trabajador. Solo quiero obtener valores, no establecer nada. – Johan

+0

@Johan no puede hacer ** nada ** a la dom. cualquier cosa del Dom que pases será básicamente un clon del objeto y no podrás hacer nada con él ... – Neal

+0

Oh, bien, gracias por la información – Johan

Cuestiones relacionadas