Was tut diese Funktion?
Ralph
- javascript
Hallo liebe Selfer,
ich werde aus dieser Funktion nicht wirklich schlau! Könnt ihr mir sagen, was sie tut?
function checkTopFrame()
{
if (frames && frames[0] && frames[0].document)
{
try
{
frames[0].document.domain;
}
catch(e)
{
location = "/error";
}
self.setTimeout('checkTopFrame()', 3000);
}
}
self.setTimeout('checkTopFrame()', 3000);
Die Funktion entstammt der Google-Bildersuche: wenn man dort ein Ergebnis öffnet, ist die entsprechende Seite mit einem Frame verziert. So wie bspw. hier.
Nur, was tut sie?
Ralph
Mahlzeit Ralph,
ich werde aus dieser Funktion nicht wirklich schlau! Könnt ihr mir sagen, was sie tut?
frames[0].document.domain;
Das kenne ich nicht. Anscheinend handelt es sich um irgendwas Google-spezifisches. Und wenn der Aufruf nicht klappt, wird halt auf eine Fehler-URL weitergeleitet:
catch(e)
{
location = "/error";
}
MfG,
EKKi
Hi,
Das kenne ich nicht. Anscheinend handelt es sich um irgendwas Google-spezifisches.
document.domain (offiziell nur lesbar, praktisch auch beschreibbar).
Gruß, Cybaer
Hi,
if (frames && frames[0] && frames[0].document)
Existieren frames-Objekt, der erste Frame und ein Dokument im ersten Frame?
Wenn ja:
frames[0].document.domain;
Auf Domainnamen dieses Dokuments zugreifen.
Und wenn Zugriff scheitert (weil sich das Dokument auf einem anderen Server befindet (Same-Origin-Policy):
location = "/error";
"Fehlerseite" laden
self.setTimeout('checkTopFrame()', 3000);
Test 3 Sekunden nach dem letzten Test wiederholen.
Nur, was tut sie?
Verhindern, daß dem User im ersten Frame unbemerkt ein Dokument untergejubelt wird, das gar nicht von Google stammt.
Gruß, Cybaer
Hi Cybaer,
verdammt, ich hatte doch hier gestern super ausfuehrlich gedankt, und noch alles moegliche dazu geschrieben. Tja, Speichern vergessen, oje...
Jedenfalls danke! Letztlich hat sich rausgestellt, dass sich die Google-Frames nicht beeinflussen lassen. Ich hab's jetzt per JS-Weiterleitung und mit verschiedenen Tricks gelöst. Scheint alles zu passen :-)
Danke nochmal, vor allem fuer den Hinweis auf die Same-Origin-Policy!
Ralph