A
Agent_Smith
Hallo zusammen,
ich habe folgendes Szenario als Grundlage für mein Problem:
In eine HTML-Seite, welche innerhalb einer dreistufigen domain liegt (aaa.xxx.yyy), habe ich mittels eines iFrames Inhalte einer anderen Seite, die wiederum in einer anderen dreistufigen Domain liegt (bbb.xxx.yyy), eingebunden.
Die Darstellung der Inhalte funktioniert einwandfrei - jedoch ist die Größe des iFrames nicht an den Inhalt angepasst. Darum habe ich ein JavaScript in die HTML-Seite eingebunden, welches die Größe des fremden Inhalts (document.body.scrollHeight) auslesen soll, um im Anschluss das iFrame auf diese Größe anpassen zu können.
Dieses Script sieht wie folgt aus:
function calcHeight(doc)
{
var object = doc.getElementById("the_iframe");
var the_height=0;
if(navigator.userAgent.indexOf("MSIE")>0)
{
the_height=object.contentWindow.document.body.scrollHeight;
}
else
{
// Beim Mozilla muss das iFrame 20px grösser sein
the_height=object.contentWindow.document.body.scrollHeight+20;
}
var the_width=object.contentWindow.document.body.scrollWidth;
object.height=the_height;
object.width=the_width;
}
Das iFrame übergibt das Objekt "document" an diese Funktion, welche dann versucht mittels "object.contentWindow.document.body.scrollHeight" auf die Größe des fremden Inhalts zuzugreifen. Genau an dieser Stelle gibt es jedoch ein Zugriffsverbot, welches aufgrund der zwei unterschiedlichen Domains (aaa.xxx.yyy und bbb.xxx.yyy) ensteht.
Dazu habe ich beide Domains mittels folgenderJavaScript-Zeile auf die beiden letzten Teile reduziert:
var x = location.hostname.indexOf('.')+1;if (x>0) document.domain = location.hostname.substring(x);
Nun heißen beiede "document.domains" nur noch "xxx.yyy". Leider scheint dies aber noch nicht ausreichend zu sein, denn ich bekomme immer noch beim Laden im FireFox folgende Fehlermeldung:
Fehler: uncaught exception: Die Erlaubnis für das Lesen der Eigenschaft HTMLDocument.body wurde verweigert
Im Internet Explorer verhält es sich ähnlich mit einer "Zugriff verweigert" Meldung.
Dies bezieht sich auf den oben beschriebenen Teil "object.contentWindow.document.body.scrollHeight" - also den fremden Inhalt, welcher in das iFrame reingezogen wird.
Was mache ich falsch bzw. was muss ich ergänzen, so dass der Zugriff an dieser Stelle einwandfrei funktioniert?
Vielen Dank schon mal für die Antworten und viele Grüße,
Agent_Smith
ich habe folgendes Szenario als Grundlage für mein Problem:
In eine HTML-Seite, welche innerhalb einer dreistufigen domain liegt (aaa.xxx.yyy), habe ich mittels eines iFrames Inhalte einer anderen Seite, die wiederum in einer anderen dreistufigen Domain liegt (bbb.xxx.yyy), eingebunden.
Die Darstellung der Inhalte funktioniert einwandfrei - jedoch ist die Größe des iFrames nicht an den Inhalt angepasst. Darum habe ich ein JavaScript in die HTML-Seite eingebunden, welches die Größe des fremden Inhalts (document.body.scrollHeight) auslesen soll, um im Anschluss das iFrame auf diese Größe anpassen zu können.
Dieses Script sieht wie folgt aus:
function calcHeight(doc)
{
var object = doc.getElementById("the_iframe");
var the_height=0;
if(navigator.userAgent.indexOf("MSIE")>0)
{
the_height=object.contentWindow.document.body.scrollHeight;
}
else
{
// Beim Mozilla muss das iFrame 20px grösser sein
the_height=object.contentWindow.document.body.scrollHeight+20;
}
var the_width=object.contentWindow.document.body.scrollWidth;
object.height=the_height;
object.width=the_width;
}
Das iFrame übergibt das Objekt "document" an diese Funktion, welche dann versucht mittels "object.contentWindow.document.body.scrollHeight" auf die Größe des fremden Inhalts zuzugreifen. Genau an dieser Stelle gibt es jedoch ein Zugriffsverbot, welches aufgrund der zwei unterschiedlichen Domains (aaa.xxx.yyy und bbb.xxx.yyy) ensteht.
Dazu habe ich beide Domains mittels folgenderJavaScript-Zeile auf die beiden letzten Teile reduziert:
var x = location.hostname.indexOf('.')+1;if (x>0) document.domain = location.hostname.substring(x);
Nun heißen beiede "document.domains" nur noch "xxx.yyy". Leider scheint dies aber noch nicht ausreichend zu sein, denn ich bekomme immer noch beim Laden im FireFox folgende Fehlermeldung:
Fehler: uncaught exception: Die Erlaubnis für das Lesen der Eigenschaft HTMLDocument.body wurde verweigert
Im Internet Explorer verhält es sich ähnlich mit einer "Zugriff verweigert" Meldung.
Dies bezieht sich auf den oben beschriebenen Teil "object.contentWindow.document.body.scrollHeight" - also den fremden Inhalt, welcher in das iFrame reingezogen wird.
Was mache ich falsch bzw. was muss ich ergänzen, so dass der Zugriff an dieser Stelle einwandfrei funktioniert?
Vielen Dank schon mal für die Antworten und viele Grüße,
Agent_Smith