Pregunta

Internamente, Firefox JSON codificará un objeto pasado a través de postMessage hacia y desde el Trabajador Web. Sin embargo, esto solo funciona en las compilaciones Trunk de Firefox (3.6+) y no en Firefox 3.5, por lo que la pregunta es realmente cómo agregar soporte hacia atrás de esta operación a la plataforma actual. Los métodos window.atob () y window.btoa () se habían sugerido anteriormente, pero lamentablemente no están disponibles internamente para los subprocesos porque no tienen acceso al DOM.

Mozilla lo declara públicamente en su wiki para desarrolladores, pero muchos en la comunidad han notado que esto sucede. Compruebe la prueba del blog de ejohn: http://ejohn.org/files/bugs/postMessage/

También verifiqué que este es el caso, en 3.5, solo pasa cadenas, y en 3.6 pasa el objeto.

¿Fue útil?

Solución

No he notado que la codificación JSON automática no funciona en Firefox 3.5, pero principalmente he estado trabajando con Gears, que de todos modos no lo admite.

Intente incluir una utilidad JSON tanto en el trabajador script y el script principal, luego codifíquelos y descodifíquelos manualmente. Esto funciona bastante bien para mí con Gears.

Este enfoque no debería interrumpirse cuando Firefox comienza a hacer la codificación JSON automáticamente, ya que la cadena JSON codificada seguirá siendo una cadena.

Otros consejos

En JavaScript hay dos funciones respectivamente para decodificar y codificar cadenas base64:

atob () btoa ()

¡Encontré la solución a mi propio problema!

Parece que si la variable del hilo, incluso si se declara globalmente, pierde su propiedad .onmessage si dicha propiedad se declara dentro de otra función. Si la propiedad se crea una instancia en el ámbito global, entonces los mensajes JSON se analizan correctamente.

Todavía no estoy seguro de entender lo que está pasando aquí, pero al menos he descubierto una manera de pasar objetos sin tener que depender de ninguna biblioteca adicional de stingify / json.

Si alguien me pudiera explicar esto para entenderlo mejor, se lo agradecería :)

Configuré un caso de prueba aquí: http://x.miernicki.com/ que registra el mensajes entre subprocesos a la consola firebug si a alguien le importa. Esto me ayudó a hacer pasar objetos en Fox3.5 y, finalmente, me permitió ver cuál era el problema.

Dado que claramente está buscando una solución solo para FF, ¿ha probado suObjeto.a Fuente () ?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top