Wie kann ich die Popup-Funktionalität von Chat-Fenstern in Google Mail implementieren?

8

Ich bin nicht auf der Suche nach einer vollständigen Implementierung, ich bin mehr daran interessiert, wie sie es tun. Ich weiß, dass sie GWT benutzen, aber ich hätte gerne eine tiefere Antwort. Naiv, würde ich anfangen zu denken, wenn Sie auf den Popout-Link klicken, öffnen Sie einfach ein neues Fenster und kopieren Sie Inhalt hinein. Es gibt viele Gründe, warum das nicht gut geht, also frage ich mich, ob jemand weiß oder Ideen hat, wie er das macht oder wie es gemacht werden könnte.

    
Bialecki 04.10.2008, 06:21
quelle

2 Antworten

12

Ich musste kürzlich genau dieses Problem in einer App lösen. Am Ende habe ich dieses großartige kleine jQuery-Plugin benutzt, um den Trick zu machen: WindowMsg (siehe Link unten) Während ich sicher bin, dass es andere Möglichkeiten gibt, die gleiche Aufgabe zu erledigen, funktioniert das Plugin so:

  • Zuerst erstellen Sie ein neues untergeordnetes Fenster aus Ihrem ursprünglichen Fenster mit window.open
  • Sie speichern einen Verweis auf das von window.open
  • zurückgegebene Fensterobjekt
  • Sie rufen eine Bibliotheksmethode im untergeordneten Fenster auf, die ein verborgenes Formular für die Bibliothek zum Speichern von Daten in
  • hinzufügt
  • Sie rufen eine Bibliotheksmethode im übergeordneten Fenster auf, die window.document.forms verwendet, um Formularfelder im untergeordneten Fenster zu füllen (die Bibliothek abstrahiert all diese Dinge, sodass Sie nicht einmal wissen würden, dass ein Formular involviert war, wenn Sie nicht gesucht haben an der Quelle) window.document.forms funktioniert gleich auf allen gängigen Browsern, so dass diese Abstraktion in x-Browser kompatibel
  • ist
  • schließlich verweist das untergeordnete Fenster mit window.opener wieder auf sein übergeordnetes Fenster und kann über ein paralleles verstecktes Formular auf dem übergeordneten
  • zurück kommunizieren
  • Die Bibliothek implementiert einen praktischen Helfer, der eine Callback-Funktion auf jeder Seite ausführt, um die Callback-Kette einfach mit
  • zu behandeln

Nach meiner Erfahrung mit der Bibliothek wäre es auch ganz nett gewesen, wenn sie die JSON 2-Bibliothek von JSON.org enthalten hätten. Out-of-the-Box, WindowMsg erlaubt Ihnen nur String-Nachrichten zwischen Windows zu senden, aber mit ein paar ziemlich einfache Verwendung der JSON 2-Bibliothek konnte ich es hacken, um das Senden von vollständigen JSON-Objekte zwischen Windows zu ermöglichen. Ich wette, dass reifere Bibliotheken (wie etwa das, was Google verwendet) diese Art der Serialisierung und Deserialisierung enthalten.

Ich setze diesen Link hier, weil der Stack Overflow-Formatierer aus irgendeinem Grund ihn zu einem Anker-Link ohne abschließendes Tag macht, und ich möchte nicht, dass mein gesamter Post ein riesiger Hyperlink ist!

WindowMsg: Ссылка

    
Greg Borenstein 04.10.2008, 07:27
quelle
1

Ich würde sagen, der einfachste Weg wäre, die Daten auf dem Server zu speichern (was Sie wahrscheinlich schon tun), dann müssen Sie nur das neue Fenster diese Daten abrufen.

Natürlich würde das Dinge wie den Inhalt einer Textbox, die der Benutzer eingegeben hat, nicht beibehalten. Je nachdem, für was das Fenster ist, ist es vielleicht unpraktisch ... aber es ist immer am besten, die einfachste Option auszuprobieren! / p>     

dbr 04.10.2008 08:31
quelle

Tags und Links