No estoy buscando una implementación completa, estoy más interesado en cómo lo hacen. Sé que usan GWT, pero me gustaría una respuesta de bajo nivel. Ingenuamente, comenzaría por pensar que al hacer clic en el enlace emergente, simplemente abren una nueva ventana y copian contenido en ella. Hay muchas razones por las que no funcionará bien, así que me pregunto si alguien sabe o tiene ideas sobre cómo lo hacen o cómo se podría hacer.¿Cómo puedo implementar la funcionalidad emergente de las ventanas de chat en GMail?
Respuesta
Recientemente tuve que resolver exactamente este problema en una aplicación. Terminé usando este pequeño gran plugin de jQuery para hacer el truco: WindowMsg (ver el enlace al final) Aunque estoy seguro de que hay otras maneras de lograr la misma tarea, que plugin no funciona de esta manera:
- primero se cree una nueva ventana secundaria desde su ventana original usando window.open
- guarda una referencia al objeto ventana devuelto por window.open
- llama a un método de biblioteca en la ventana secundaria que agrega un formulario oculto para la biblioteca a almacenar datos en
- llama a un método de biblioteca en la ventana primaria que usa window.document.forms para rellenar campos de formulario en el hijo dow (la biblioteca abstrae todas estas cosas para que no sepas que hay un formulario involucrado a menos que mires la fuente) window.document.forms funciona igual en todos los navegadores principales, por lo que esta abstracción en x-browser es compatible
- finalmente, la ventana secundaria hace referencia a su ventana padre usando window.opener y puede comunicarse a través de un formulario oculto paralelo en el padre
- la biblioteca implementa un asistente conveniente que lleva una función de devolución de llamada para ejecutar en cada lado cadena de devolución de llamada fácil de tratar
En mi experiencia trabajando con la biblioteca, también habría sido bastante agradable si hubieran incluido JSON 2 lib de JSON.org. Fuera de la caja, WindowMsg solo le permite enviar mensajes de cadena entre ventanas, pero con un uso bastante simple de JSON 2 lib, pude hackearlo para permitir el envío de objetos JSON completos entre ventanas. Apuesto a que las bibliotecas más maduras (como las que utiliza Google) incluyen ese tipo de serialización y deserialización incorporada.
Pongo este enlace aquí porque, por alguna razón, el formateador Stack Overflow lo convierte en un enlace de anclaje con ¡No hay etiqueta de cierre y no quiero que toda mi publicación sea un hipervínculo gigante!
WindowMsg: http://www.sfpeter.com/2008/03/13/communication-between-browser-windows-with-jquery-my-new-plugin/
Yo diría que la forma más fácil sería tener los datos almacenados en el servidor (que probablemente ya lo hacen), entonces simplemente tener la nueva ventana de recuperar esos datos.
Por supuesto que no persistirían cosas como el contenido de un cuadro de texto que el usuario ha ingresado, así que dependiendo de para qué sirve la ventana, puede ser impráctico ... ¡pero siempre es mejor comenzar a probar la opción más simple!
- 1. ¿Cómo implementar chat de voz en cacao?
- 2. ¿Cómo implementar la funcionalidad de deshacer?
- 3. Funcionalidad emergente Django Admin
- 4. Cómo implementar chat de voz y video
- 5. Cómo implementar la funcionalidad de búsqueda en C#/ASP.NET MVC
- 6. ¿Cómo implementar la aplicación de chat para Android?
- 7. ¿Cómo implementar la funcionalidad de clasificación en gridview?
- 8. Aplicación de chat: qué tecnología es mejor implementar la aplicación de chat en Android
- 9. ¿Cómo puedo implementar la funcionalidad de disminución de clave en el heapq de Python?
- 10. ¿Cómo puedo implementar la funcionalidad "Snooze" de Apple en su aplicación Clock?
- 11. ¿Cómo implementar pausa (y más) funcionalidad?
- 12. ¿Cómo puedo tener un video chat en mi sitio como Gmail?
- 13. ¿Cómo puedo implementar la funcionalidad de awt.CardLayout en mi aplicación JavaFX 2.0?
- 14. Mejor Práctica: Aplicación Erlang Implementar en las ventanas
- 15. Cómo implementar funcionalidad de alternar en JQuery UI Seleccionable?
- 16. ¿Cuál es la manera de implementar la funcionalidad Guardar/Cargar?
- 17. cómo implementar la funcionalidad atrás y hacia adelante como navegador
- 18. Implementar vista como burbujas de chat de iPhone estándar ver
- 19. ¿Cómo puedo lograr la funcionalidad de initcap en MySQL?
- 20. ¿Cómo hacer una aplicación de chat en Android?
- 21. Dónde implementar funcionalidad común En Asp.net MVC
- 22. Diferentes formas de implementar la funcionalidad 'dirty'-flag
- 23. Aplicación de chat y VOIP
- 24. ¿Cómo puedo acceder al chat de Hangouts de Google+?
- 25. ¿Cómo implementar OAuth PHP para el feed de Gmail Atom?
- 26. Cómo implementar teclas de acceso rápido similares a gmail
- 27. ¿Es esta una forma razonable de implementar la funcionalidad 'recordarme'
- 28. ¿Conservar el color del texto mientras copia las ventanas de eclipse a gmail?
- 29. ¿Cuál es la mejor manera de implementar el estilo de Gmail "deshacer" en Rails?
- 30. ¿Cómo implementar un chat web rápido con PHP?
No había oído hablar de WindowMsg antes, debe verlo, ¡salud! – ConroyP
Desafortunadamente, el enlace para ** WindowMsg ** está roto: ¿tiene otro, o puede agregar un pequeño ejemplo a su respuesta? (es decir, una muestra de código) – Matt