Hauptmenü

[gelöst] Sub-Menüs mit iframe?

Begonnen von Pete37, 27 April 2016, 21:28:49

Vorheriges Thema - Nächstes Thema

Pete37

Hallo Forum,

ich habe mich in meinem Fhem bis zum eigenen Floorplan (natürlich im LCARS-Design) vorgearbeitet und stehe jetzt vor folgender Hürde:
- Ich habe viele Schaltflächen und Anzeigen, die immer zu sehen sein sollen
- in einem Teil des Bildschirm sollen Details zu den einzelnen Systemen (Heizung, Licht, etc.) angezeigt werden können
- die Auswahl dieser Detailansicht soll über ein Menü erfolgen, dass wiederum im allgemeinen Teil des Bildschirms liegt

Dazu habe ich einen Floorplan für alles zusammen angelegt und darauf ein iFrame platziert, was die Detailansichten zeigen soll. Die Ansichten selber sind eigene Floorpläne, die ich über den Link im iFrame adressiere. Die Menü-Knöpfe ändern jetzt per modify die URL auf die das iFrame zeigt.

Soweit so gut.

Problem ist nur, das die Änderung der URL erst bei einem Browser-Refresh des kompletten Floorplans wirksam wird und das ist ein externer Trigger, den ich nicht aus Fhem heraus starten kann (zumindest hab ich noch nicht herausgefunden wie).

Weiß jemand,
- wie ich ein iFrame zur Aktualisierung auffordern kann?  oder
- wie ich einen Floorplan zur Aktualisierung auffordern kann? oder
- wie ich anders ein Sub-Menü realisieren kann, außer mit iFrame?

Vielen Dank für Eure Ideen,
Pete
Fhem auf Raspberry Pi3 mit Fritzbox inkl. Steckdosen, Philips Hue inkl. Orsam Lightify-Lampen, eq-3 Max!, SONOS, Rollotron Rolläden, Asus ZenPad, Samsung Galaxy xCover 3

der-Lolo

Schau mal ob du mit Pageswap klar kommst - gibts im fhemwiki

Pete37

Danke für den Hinweis!

Ich hab's probiert - und es funktioniert. Allerdings ist es unerträglich langsam. Auf dem Rechner schon, aber auf dem Tablet mit WebViewControl noch mal langsamer.

Wenn ich mit dem JS direkt an das eine Frame rankäme, könnte es sicher noch schneller gehen...
Fhem auf Raspberry Pi3 mit Fritzbox inkl. Steckdosen, Philips Hue inkl. Orsam Lightify-Lampen, eq-3 Max!, SONOS, Rollotron Rolläden, Asus ZenPad, Samsung Galaxy xCover 3

rudolfkoenig

Zitat
wie ich ein iFrame zur Aktualisierung auffordern kann?

Laut google:
document.getElementById(FrameID).contentDocument.location.reload(true);


iframe ist eigentlich eine Notloesung, wie man das hier eleganter loesen koennte, blicke ich aber nicht.

Pete37

das hatte ich auch schon probiert - funktioniert leider gar nicht. Oder ich habe die Frame-ID noch nicht richtig gefunden. Ich hab mir den HTML-Code des FLOORPLANs angesehen und da steht als ID genau der Name des Fhem-Objekts drin. Aber darauf reagiert das Frame leider nicht...
Fhem auf Raspberry Pi3 mit Fritzbox inkl. Steckdosen, Philips Hue inkl. Orsam Lightify-Lampen, eq-3 Max!, SONOS, Rollotron Rolläden, Asus ZenPad, Samsung Galaxy xCover 3

Pete37

Für alle, die es interessiert, ich habe eine Lösung gefunden:

Ihr müsst dem iFrame Euer Wahl per htmlAttr einen Namen geben:
name=myFrame

Dann könnt Ihr dieses iFrame über JavaScript ansprechen und z.B. mit einem neuen Floorplan beladen:

(trigger WEB JS:document.getElementsByName("myFrame")[0].contentDocument.location.replace("http://[host]:8083/fhem/floorplan/mySubmenu"))

Somit lassen sich Submenüs realisieren, die nur Teile des Bildschirms beanspruchen. der Rest vom Bild bleibt über nur einen Floorplan anprechbar.
Geht sauber und lädt nicht den gesamten Floorplan neu, ist also deutlich schneller und ansehnlicher!
Fhem auf Raspberry Pi3 mit Fritzbox inkl. Steckdosen, Philips Hue inkl. Orsam Lightify-Lampen, eq-3 Max!, SONOS, Rollotron Rolläden, Asus ZenPad, Samsung Galaxy xCover 3