Linuchs: HTML oder JS: iframe erkennen

Moin,

wie kann ich per HTML oder Javascript erkennen, ob ein Dokument im iframe gezeigt wird?

Falls nein, möchte ich dem <body> eigene Ränder geben, die sonst vom iframe vorgegeben werden.

Linuchs

  1. @@Linuchs

    wie kann ich per HTML oder Javascript erkennen, ob ein Dokument im iframe gezeigt wird?

    Per HTML? Gar nicht.

    JavaScript: https://css-tricks.com/snippets/javascript/break-out-of-iframe/

    LLAP 🖖

    --
    „Wenn du eine weise Antwort verlangst, musst du vernünftig fragen.“ —Johann Wolfgang von Goethe
    1. Hallo Gunnar,

      JavaScript: https://css-tricks.com/snippets/javascript/break-out-of-iframe/

      danke, das isses. Habe diese Zeilen eingefügt:

      <script>
      if (window.location === window.top.location) {
        document.write( "<style>body {margin: 0 5mm 0 20mm!important} footer{right:5mm;bottom:5mm;left:20mm}</style>" );
      }
      </script>
      

      Linuchs

  2. Hallo und guten Morgen,

    wie kann ich per HTML oder Javascript erkennen, ob ein Dokument im iframe gezeigt wird?

    Nur meine unmaßgebliche Meinung: Per HTML kann man gar nichts erkennen, so zumindest war das mal vorgesehen. Mit HTML kannst Du nur Vorgaben machen, aber keine eigene Kontrolle ausüben.

    Mit JavaScript oder CSS oder besser noche einer serverseitigen Lösung sollte das schon eher möglich sein. Was hast Du denn überhaupt vor mit dem iFrame?

    Falls nein, möchte ich dem <body> eigene Ränder geben, die sonst vom iframe vorgegeben werden.

    Lässt sich das nicht mit einer schlauen Nachfolger-/Kindelement-Regelung per CSS erschlagen?

    Grüße
    TS

    --
    es wachse der Freifunk
    http://freifunk-oberharz.de
    1. @@TS

      Nur meine unmaßgebliche Meinung: Per HTML kann man gar nichts erkennen, so zumindest war das mal vorgesehen. Mit HTML kannst Du nur Vorgaben machen, aber keine eigene Kontrolle ausüben.

      Mit JavaScript oder CSS oder besser noche einer serverseitigen Lösung sollte das schon eher möglich sein.

      Per CSS kann man gar nichts erkennen, so zumindest war das mal vorgesehen. Mit CSS kannst Du nur Vorgaben[1] machen, aber keine eigene Kontrolle ausüben.

      Lässt sich das nicht mit einer schlauen Nachfolger-/Kindelement-Regelung per CSS erschlagen?

      Du bist jetzt schlauer?

      LLAP 🖖

      --
      „Wenn du eine weise Antwort verlangst, musst du vernünftig fragen.“ —Johann Wolfgang von Goethe

      1. besser gesagt: Vorschläge ↩︎

    2. Hallo,

      Was hast Du denn überhaupt vor mit dem iFrame?

      Ich drucke verschiedene Liederbücher. Das HTML-Dokument für das gesamte Buch hat zahlreiche <iframe>, jedes iframe belegt eine A4-Seite und ist abwechselnd für ungerade / gerade Seiten vorgesehen, hat also mal links, mal rechts einen Heftrand. Druck per Duplex.

      Zusätzlicher Gag: Es kann dasselbe Liederbuch in A4, A5 und A6 geben, bei A5, A6 ist die Anordnung der einzelnen Lieder im Buch total anders. Die Größe der einzelnen Seiten wird dadurch umgeschaltet, dass ich die basis_A5.css oder basis_A6.css in basis.css umbenenne.

      Unanbhängig von den Liederbüchern bestehen HTML-Dateien für einzelne Lieder. Das Lied A kann im Buch 1 auf Seite 6 erscheinen, im Buch 2 auf Seite 71. Also mal mit rechtem, mal mit linkem Heftrand.

      Nun möchte ich gerne mal ein Lied ohne Buch drucken, also ohne iframe. Das Lied hat überhaupt keinen Rand und weil der Drucker nicht komplett A4 drucken kann, verschwindet der Text des nicht-druckbaren Randes. Deshalb:

      Falls nein, möchte ich dem <body> eigene Ränder geben, die sonst vom iframe vorgegeben werden.

      Lässt sich das nicht mit einer schlauen Nachfolger-/Kindelement-Regelung per CSS erschlagen?

      An was denkst du da? Auch das müsste wohl vom Dokument (Einzel-Lied) erkannt werden.

      Linuchs

    3. Nur meine unmaßgebliche Meinung: Per HTML kann man gar nichts erkennen, so zumindest war das mal vorgesehen.

      Stimmt nicht ganz. Ich hatte in eine HTML Datei mal eine CSS Datei eingebunden, die von einem "fremden" Server geholt wurde (der eigene Backup-Server).

      War der Server nicht online, wurde die Meldung "Server nicht erreichbar" eben nicht unterdrückt per display:none und angezeigt. Vollkommen ohne PHP oder Javascript.

      Linuchs

      1. Hallo und guten Morgen,

        Nur meine unmaßgebliche Meinung: Per HTML kann man gar nichts erkennen, so zumindest war das mal vorgesehen.

        Stimmt nicht ganz. Ich hatte in eine HTML Datei mal eine CSS Datei eingebunden, die von einem "fremden" Server geholt wurde (der eigene Backup-Server).

        War der Server nicht online, wurde die Meldung "Server nicht erreichbar" eben nicht unterdrückt per display:none und angezeigt. Vollkommen ohne PHP oder Javascript.

        Für was kam denn die Meldung?
        Aber nicht für ein <link rel="stylesheet" ...>?

        Für den secondary Request auf das <iFrame> wäre es richtig. Beim Stylesheet ist das immer noch nicht einheitlich geregelt. Lässt sich auch prima für eMails nutzen ...öhhäbuh

        Grüße
        TS

        --
        es wachse der Freifunk
        http://freifunk-oberharz.de
        1. Für was kam denn die Meldung?
          Aber nicht für ein <link rel="stylesheet" ...>?

          Doch: <link rel="stylesheet" href="http://example.com/css/meldung.css">

          Soweit mir bekannt, ist das "Holen" von Bildern und CSS Dateien von fremden Servern politisch zugelassen (same-origin policy = Politik der gleichen Herkunft).

          Für den secondary Request auf das <iFrame> wäre es richtig.

          Was ist secondary Request und wie könnte es mein Problem lösen?

          Linuchs

          1. Hallo und guten Tag Linuchs,

            Für was kam denn die Meldung?
            Aber nicht für ein <link rel="stylesheet" ...>?

            Doch: <link rel="stylesheet" href="http://example.com/css/meldung.css">

            Ja, sag ich doch! Für <link rel="stylesheet" href="http://example.com/css/meldung.css"> dürftest Du (noch) keine Fehlermeldung kassieren, wenn die Ressource nicht vorhanden ist.

            Soweit mir bekannt, ist das "Holen" von Bildern und CSS Dateien von fremden Servern politisch zugelassen (same-origin policy = Politik der gleichen Herkunft).

            Für den secondary Request auf das <iFrame> wäre es richtig.

            Was ist secondary Request und wie könnte es mein Problem lösen?

            Der primary Request geht i. d. R. durch den User auf die HTML-Ressource (per Adresszeile im Browser oder durch Link). Der secondary Request wird dann von dieser Ressource mit Hilfe des Browser-Parsers ausgelöst, und zwar im Hintergrund. Das wird dem Benutzer bestenfalls noch in der Statuszeile des Browsers angezeigt.

            Grüße
            TS

            --
            es wachse der Freifunk
            http://freifunk-oberharz.de