2008-10-04 7 views
8

Je ne cherche pas une implémentation complète, je suis plus intéressé par la façon dont ils le font. Je sais qu'ils utilisent GWT, mais j'aimerais une réponse de plus bas niveau. Naively, je commencerais par penser lorsque vous cliquez sur le lien popout, ils ouvrent simplement une nouvelle fenêtre et copient le contenu. Il y a beaucoup de raisons pour lesquelles cela ne fonctionnera pas bien, alors je me demande si quelqu'un sait ou a des idées sur la façon de le faire ou comment cela pourrait être fait.Comment puis-je implémenter la fonctionnalité pop-up des fenêtres de discussion dans GMail?

Répondre

12

J'ai récemment eu besoin de résoudre exactement ce problème dans une application. J'ai fini à l'aide de ce grand petit plugin jQuery pour faire le tour: WindowMsg (voir le lien en bas) Alors que je suis sûr qu'il ya d'autres façons d'accomplir la même tâche, ce plugin ne fonctionne ainsi:

  • d'abord vous créer une nouvelle fenêtre enfant à partir de votre fenêtre d'origine en utilisant window.open
  • vous sauvegardez une référence à l'objet fenêtre retourné par window.open
  • vous appelez une méthode de bibliothèque dans la fenêtre enfant qui ajoute une forme cachée pour la bibliothèque stocker des données dans
  • vous appelez une méthode de bibliothèque dans la fenêtre parent qui utilise window.document.forms pour remplir les champs de formulaire sur la victoire enfant dow (la bibliothèque fait abstraction de toutes ces choses pour que vous ne sachiez même pas qu'il y avait un formulaire à moins que vous ne regardiez la source) window.document.forms fonctionne de la même manière sur tous les principaux navigateurs donc cette abstraction dans x-browser compatible
  • Enfin, la fenêtre enfant renvoie à sa fenêtre parente à l'aide de window.opener et peut communiquer via une forme cachée parallèle sur le parent
  • la bibliothèque implémente une aide pratique qui prend une fonction de rappel de fonctionner de chaque côté pour faire le chaîne de rappel facile à traiter

Dans mon expérience de travail avec la bibliothèque, il aurait également été plutôt bien s'ils avaient inclus la librairie JSON 2 de JSON.org. À la sortie de la boîte, WindowMsg vous permet seulement d'envoyer des messages de chaîne entre les fenêtres, mais avec une utilisation assez simple de la librairie JSON 2, j'ai pu la bidouiller pour permettre l'envoi d'objets JSON complets entre les fenêtres. Je parie que les bibliothèques plus matures (comme tout ce que google utilise) incluent ce type de sérialisation et de sérialisation.

Je mets ce lien ici parce que pour une raison quelconque, le formateur Stack Overflow le transforme en un lien d'ancrage avec pas de balise de fermeture et je ne veux pas que tout mon message soit un hyperlien géant!

WindowMsg: http://www.sfpeter.com/2008/03/13/communication-between-browser-windows-with-jquery-my-new-plugin/

+0

N'avait pas entendu parler de WindowMsg avant, doit y jeter un œil, bravo! – ConroyP

+0

Malheureusement, le lien pour ** WindowMsg ** est cassé - en avez-vous un autre, ou pouvez-vous ajouter un petit exemple à votre réponse? (c'est-à-dire un échantillon de code) – Matt

1

Je dirais que la meilleure façon serait d'avoir les données stockées sur le serveur (que vous faites probablement déjà), puis juste avoir la nouvelle fenêtre récupérer ces données.

Bien sûr, cela ne permettrait pas de conserver le contenu d'une boîte de texte que l'utilisateur a entrée, donc cela dépend de la fenêtre, mais il est toujours préférable de commencer par essayer l'option la plus simple!

Questions connexes