Ich schreibe ein Lightweight Backend Module und das funktioniert sehr gut. Ich zeige eine Liste mit Elementen, die per Klick auf ein entsprechendes Icon in einem Popup-Fenster bearbeitet werden können.
Das Popup-Fenster öffne ich als SubWindow mit Hilfe der postMessageApi:
Hab mich damit noch nicht beschäftigen müssen, steht demnächst an. Sowas wie sendMessageToParentWindow o.ä. gibt es nicht? Sonst könntest du gucken wie das sendMessageToSubWindow aufgebaut ist und das dann entweder replizieren oder reversen.
Hab mich damit noch nicht beschäftigen müssen, steht demnächst an. Sowas wie sendMessageToParentWindow o.ä. gibt es nicht? Sonst könntest du gucken wie das sendMessageToSubWindow aufgebaut ist und das dann entweder replizieren oder reversen.
Vielen Dank für deine Antwort. Leider gibt es keine sendMessageToParentWindow Funktion, obwohl diese Funktionalität sogar im PostMessage Working Draft vorgesehen ist:
Stimmt, sendMessageToSubWindow kann man auch an das “Elternfenster” addressieren - in manchen Szenarios also sicher der bevorzugte Weg. In meinem Fall war das suboptimal, da ich meine EventListener teils nicht nur in einem Fenster sitzen hab und es dann schlussendlich konsistener fand, alles über konkrete Events zu lösen.
Noch ergänzend zum Thema, weshalb ich eigentlich auf den Thread hier stoß: ich war auf der Suche nach einer Möglichkeit für das Elternfenster (oder irgendein “interessiertes” anderes Fenster) das Schließen des Unterfensters zu registrieren. Das postMessageApi-Event 'component/destroy feuert leider nicht, wenn der Benutzer auf die x-Schaltfläche des Fensterrahmens klickt. Falls noch wer genau daran hängen bleibt, hier meine momentane (Zwischen-?)Lösung:
var module = parent.window.Shopware.ModuleManager.modules.get(postMessageApi.getInstance());
var windowApp = module.windows.get('nameDesSchließendenFensters');
windowApp.on('beforeclose', meinBeforeCloseHandler, this);
// Oder:
windowApp.on('close', meinCloseHandler, this);
Wenn man vom Modul aus irgendwie eleganter an die Enlight-SubApp kommt, gerne einklinken