molily: Funktion in HTML Objekt aufrufen

Beitrag lesen

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