Hallo,
<object name="N1" id="O1" data="objekt.html" type="text/html" width="100" height="50" standby="Loading..."></object>
Nun möchte ich von der objekt.html die Funktion Fkt1() in haupt.html aufrufen.
Oder aus der objekt.html in der haupt.html die Variable VAR1 ändern.
parent.funktion();
parent.variable = "wert";
Im MSIE geht das aber nicht. Wohl prinzipiell. Ich wüsste zumindest keine Möglichkeit. parent verweist genauso wie top auf das eigene window-Objekt.
Auch umgekehrt wäre interessant, wie kann ich aus der haupt.html auf JavaScript der objekt.html zugreifen?
Das wird schon schwieriger.
Vom object-Elementknoten auf das window-Objekt des Dokuments im object zuzugreifen, ist kompliziert. DOM HTML sieht die Eigenschaft contentDocument vor, darüber bekommt man das document-Objekt zu fassen, aber nicht das window-Objekt. Im MSIE gibt es stattdessen die Eigenschaft object. Die Brücke vom document-Objekt zum zugehörigen window-Objekt ist die Eigenschaft defaultView, das kann der MSIE aber nicht. Dafür kennt der parentWindow.
Das macht in der Summe:
<p><object type="text/html" data="objekt.html" id="obj" width="100" height="100"></object></p>
var obj = document.getElementById("obj");
var objwindow;
if (obj.contentDocument && obj.contentDocument.defaultView) {
objwindow = obj.contentDocument.defaultView;
} else if (obj.object && obj.object.parentWindow) {
objwindow = obj.object.parentWindow;
}
if (objwindow) {
objwindow.funktion();
objwindow.variable = "wert";
}
Aber vielleicht solltest du lieber einen gewöhnlichen iframe und dann window.frame.framename bzw. parent verwenden, damit gelingt der Zugriff vom Dokument im Objekt auf das darüberliegende Dokument auch im IE.
Mathias