Flexible Höhe bei Objekten / iframes

  • Hallo zusammen,

    bin noch neu in der PlugIn Entwicklung von Wordpress und schlage mich deshalb mit Anfänger-Sachen herum. :)

    Ich soll eine externe Webanwendung (also kein WP-PlugIn, liegt aber auf dem selben Server) als eine Seite in WP integrieren. Ich mache das als Objekt (als Ersatz für iframe) und im Prinzip geht es auch. Das Problem ist lediglich die Höhe. Die Anwendung hat viele Unterseiten. Die können sehr klein, aber auch sehr lang sein. Das Objekt soll sich aber der Größe nach anpassen. Wenn ich height:100%; nehme, ist es für jede Seite zu kurz. Ich könnte nun den höchst möglichen Wert nehmen (aktuell height:2500px;, ist aber noch zu kurz) aber dann habe ich bei den meisten Seiten einen sehr langen leeren Bereich.

    Der Code sieht aktuell so aus:

    Code
    <object data="https://www..." type="text/html" style="float:left;width:100%;height:2500px;min-height:100%;"></object>


    Das Ganze ist in einer Funktion eingebunden, die einen Shortcode generiert. Der Shortcode ist in einer entsprechenden Seite eingebunden.

    Hat jemand eine bessere Lösung dafür?

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Variante 1: Eine andere CSS Unit, z.B. height: 85vh; verwenden, dann sollte bei Bedarf beim Object der Anwendung ein Scrollbar erscheinen.
    Variante 2: Ausgabe des entspr. HTML-Codes direkt im Content, ohne Umweg über Object/iframe.
    Variante 3: Irgendwelche JavaScript-Hacks, die die Höhe anpassen, die aber auch voraussetzen, dass man den Code der Anwendung anpassen kann.

    3 Mal editiert, zuletzt von b3317133 (11. Mai 2019 um 16:43)

  • Danke für die extrem schnelle Antwort. Variante 1 habe ich schon durch, da hilft leider nichts.

    Variante 2: Das habe ich vor dem Umweg versucht, erschien mir aber ein ziemlich großer Aufwand zu sein. So, wie ich das verstehe, müsste ich die komplette Anwendung umschreiben. Vielleicht bin ich da aber auch auf dem Holzweg.

  • Habe noch eine dritte Variante ergänzt.

    Für Variante 2 würde man z.B. in einem Shortcode alle Eingaben, Navigation usw. an die Anwendung weitergeben, sprich die Anwendung im Hintergrund aufrufen, die Ausgabe nehmen, davon header/footer/usw. entfernen bzw. den eigentlich gewünschten Inhalt extrahieren, Links anpassen, und dann nur das direkt ausgeben.

  • Habs mit Variante 3, JavaScript, im Griff.

    Code
    <body onload="parent.document.getElementById('meinObjekt').height = document.body.scrollHeight+25;">

    Das Objekt hat dann natürlich auch id="meinObjekt".

    Code
    <object id="meinObjekt" data="https://www..." type="text/html" scrolling="no" style="float:left;width:100%;"></object>

    Die einzige Unschönheit ist: Wenn man eine Seite wählt, die einen großen Frame braucht und dann auf eine Seite kommt, bei der ein kleiner Frame ausreicht, zieht es sich nicht mehr zusammen. Aber damit kann ich leben. :)

    Noch einmal Danke für die extrem schnelle Hilfe @b3317133.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!