Linuchs: Seite im iframe, Abfrage ob

Moin,

wie kann ich feststellen, ob meine Seite in einem iframe geöffnet wurde?

Offenbar kann man weder die top- noch die parent-Seite abfragen:

alert( "["+window.top.location+"]" );

Error: Permission denied to access property Symbol.toPrimitive

typeof window.top.location gibt die Antwort object

Linuchs

  1. alert(window.parent.location.href);
    alert(this.location.href);
    
    1. alert(window.parent.location.href);
      

      Error: Permission denied to access property "href"

      Kann man denn wenigstens die Fehlermeldung auswerten? Permission denied kommt ja auf der eigenen Seite nicht vor.

      Linuchs

      1. Hallo Linuchs,

        Kann man denn wenigstens die Fehlermeldung auswerten?

        Es gibt ein error-Event. Allerdings kommt die Info dann immer noch nicht zu dir.

        Bis demnächst
        Matthias

        --
        Dieses Forum nutzt Markdown. Im Wiki erhalten Sie Hilfe bei der Formatierung Ihrer Beiträge.
        1. Hallo Matthias,

          Es gibt ein error-Event. Allerdings kommt die Info dann immer noch nicht zu dir.

          Okay, habe mit diesem Hinweis mal was "gebastelt":

            window.onerror = imFrame;
            function imFrame (Nachricht, Datei, Zeile) {
              var fehler = "Fehlermeldung:\n" + Nachricht + "\n" + Datei + "\n" + Zeile;
          //  alert( fehler );
              if ( fehler.indexOf( "Permission denied" ) > (-1) ) {
                document.getElementById( "nav_content" ).style.display = "none";
              }
              return true;
            }
            var URL = window.parent.location.href;  // fuehrt im iframe zu "Permission denied"
          

          Scheinbar gibt es keinen Error-Code und ob jeder Browser den gleichen Text verwendet, ist nicht dokumentiert. Also eine Zufallslösung, die jetzt und auf meinem Browser funzt.

          Unbefriedigend.

          Linuchs

  2. Hi,

    wie kann ich feststellen, ob meine Seite in einem iframe geöffnet wurde?

    m.W. allgemein gar nicht. Du kannst nur feststellen, ob es irgendein Frame ist - wenn nämlich top und self nicht übereinstimmen.

    Wenn das übergeordnete Dokument vom selben Origin kommt, könnte man evtl. noch mehr rausfinden, bei fremdem Origin verhindert die Same Origin Policy einen Zugriff auf das Dokument.

    cu,
    Andreas a/k/a MudGuard

  3. Hello,

    wie kann ich feststellen, ob meine Seite in einem iframe geöffnet wurde?

    Auf dem Server den referer im log auswerten, dann die Seite zum referer laden und nachschauen, ob dort ein Sekundärrequest auf deine Seite (also im iFrame) angefordert wird.

    Liebe Grüße
    Tom S.

    --
    Die Krawatte ist das Kopftuch des Westens
  4. Hello,

    in derenglischen wikipedia steht noch ein Artikel zu Framekiller drin, der vor vier Monaten das letzte Mal überarbeitet wurde. Vielleicht geht da doch noch 'was?

    Liebe Grüße
    Tom S.

    --
    Die Krawatte ist das Kopftuch des Westens
    1. Moin Tom,

      Framekiller drin, der vor vier Monaten das letzte Mal überarbeitet wurde. Vielleicht geht da doch noch 'was?

      Dass meine Seite im frame angezeigt wird, ist gewollt. Ich möchte lediglich Bereiche ausblenden.

      Ich probiere mal die PHP-Lösung. Das hat den Vorteil, dass ich die Platzhalter-Datei wählen kann und nicht mit einer Javascript-Error-Krücke auf die Nase falle.

      Linuchs

      1. Aloha ;)

        Framekiller drin, der vor vier Monaten das letzte Mal überarbeitet wurde. Vielleicht geht da doch noch 'was?

        Dass meine Seite im frame angezeigt wird, ist gewollt. Ich möchte lediglich Bereiche ausblenden.

        window.addEventListener("load",function(){
          if (top != self) {
            var elms = document.getElementsByClassName("hideInIframe");
            for (let i = 0; i < elms.length; i++) {
              elms[i].style.display = "none";
            }
          }
        });
        

        ?

        Grüße,

        RIDER

        --
        Camping_RIDER a.k.a. Riders Flame a.k.a. Janosch Zoller
        # Twitter # Steam # YouTube # Self-Wiki # Selfcode: sh:) fo:) ch:| rl:) br:^ n4:? ie:% mo:| va:) js:) de:> zu:} fl:( ss:) ls:[
      2. Hallo Linuchs,

        Framekiller drin, der vor vier Monaten das letzte Mal überarbeitet wurde. Vielleicht geht da doch noch 'was?

        Dass meine Seite im frame angezeigt wird, ist gewollt. Ich möchte lediglich Bereiche ausblenden.

        Dann mach es doch anders rum. Blende grundsätzlich alles aus und auf deiner Originalseite (wo du ja JS-Zugriff hast) die entsprechenden Bereiche ein.

        Bis demnächst
        Matthias

        --
        Dieses Forum nutzt Markdown. Im Wiki erhalten Sie Hilfe bei der Formatierung Ihrer Beiträge.