2017-10-18 1 views
8

Ich habe die Idee, Elemente auf Popup-Fenster zu lösen. Machen Sie ein Popup mit window.open(), richten Sie einige Elemente in diesem Dokument ein und fügen Sie Ereignis-Listener hinzu, die den ursprünglichen Zweck erfüllen, aber als Popup-Fenster-Komponente. All dies funktioniert, und es scheint, dass das erstellte Fenster vom selben Thread behandelt wird.Auswirkungen der Verwendung mehrerer interaktiver Popup-Fenster

Ist diese "Technik" zufällig anfällig? Beispiel: Wenn ich im Popupfenster eine Arbeitsfläche erstelle und daraus einen WebGL-Kontext erhalte, wird es dann einwandfrei funktionieren? Wenn ich eine Reihe von Ereignis-Listenern einrichten werde, bekomme ich dann ohne Verzögerung Rückrufe von ihnen?

Ich konnte meine Forschung zu diesem hier nicht tun, weil fast niemand dies tut. Durch mein Leben habe ich viele Seiten Popup-Fenster für Benutzereingaben gesehen, aber nicht für interaktive oder Echtzeit-Sachen. Ich erstelle eine Web-App, die so komplex ist, dass die Verwendung mehrerer Monitore in der Benutzererfahrung von Vorteil wäre. Weißt du, zumindest weiß ich, wie schmerzhaft es ist, zwei Monitore zu haben und nicht beide zu benutzen, weil alle Komponenten der App in einem einzigen Fenster verkrampft sind. Stellen Sie sich vor, Sie verwenden eine MDI-Version von Photoshop, bei der sich die gesamte Toolbox im MDI-Bereich befindet und Sie sie nicht aus dem App-Fenster herausholen können. Eine Webseite ist genau das.

+1

Microsoft Dynamics CRM tut dies ausgiebig. Es ist ziemlich "real-timey". Zweifellos wird dies Ihnen helfen, ihre Techniken weiter zu erforschen, aber es ist ein Beispiel, das Ihnen in den Sinn kommt. FWIW, ich habe zwei Monitore noch Dynamics CRM kann immer noch frustrierend sein, mit all seinen mehreren Fenstern zu verwenden; Sie müssen immer noch sorgfältig durchdenken, wie diese mehreren Fenster funktionieren, oder es könnte schlimmer als ein einzelnes Fenster UI werden. –

+0

Es ist eine öffentlich zugängliche Web-App oder eine interne? Mit anderen Worten, Sie haben die Kontrolle über die Umwelt? – fruggiero

+0

@fruggiero Nein. Es richtet sich an die breite Öffentlichkeit. Über eine Flugsimulation wie das Kerbal Space Program. –

Antwort

1

Obwohl dies nicht konventionell ist, scheint es definitiv die von Ihnen erwähnte Anforderung zu erfüllen. Ich sehe keine Probleme, wenn es um die Browser-Unterstützung für den Umgang mit Wiedergabe oder Kommunikation zwischen den Fenstern geht. Es ist nur so, dass Sie mit Ihrem Code vorsichtiger sein müssen. So etwas wie häufige Überprüfungen, falls der Benutzer eines Ihrer Pop-ups geschlossen hat (oder einen Rückruf beim Schließen des Fensters registrieren, damit Sie die notwendigen Anpassungen vornehmen können).

Eventing über die Fenster sollte auch in Ordnung sein. Siehe http://help.dottoro.com/ljrwrqew.php, die genau dasselbe Beispiel hat, um den Ereignisrückruf von einem Fenster zu einem anderen zu verknüpfen.

Eine weitere gute Lese ist http://www.infimum.dk/HTML/JSwindows.html

0

Ein möglicher Nachteil könnte sein, dass das Pop-up kann durch den Browser Popup-Blocker blockiert werden (aber ja, könnten Sie den Benutzer darüber informieren, um das Popup von Ihrer Web-Anwendung nicht blockieren kommen)

Eine andere könnte sein, dass die Dimensionen des Popups, das Sie auf Ihrem JavaScript-Code angeben, nicht respektiert werden können (dies liegt im Ermessen des Browsers), so könnte beispielsweise ein Browser das Popup in einem neuen öffnen Tab oder ein neues maximiertes Fenster.

Hier finden Sie einige fertige Experimente mit Multi-Fenster finden: https://experiments.withgoogle.com/chrome?tag=Multi-Window

Für den Datenaustausch zwischen Ihrem Hauptfenster und Ihre Pop-up sollten Sie keine Probleme haben.

Beachten Sie, dass nicht jeder Browser das gleiche Threading-Modell verwendet. Daher müssen Sie auch einige Leistungstests für alle Browser durchführen, die Sie unterstützen möchten, und die Unterschiede sehen.