Seite im iframe, Abfrage ob
Linuchs
- javascript
0 Regina Schaukrug0 Linuchs
0 MudGuard0 TS- programmiertechnik
0 TS
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
alert(window.parent.location.href);
alert(this.location.href);
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
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
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
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
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.
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.
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
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
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