Hallo George,
gegeben sei ein <object>-Tag, ... Der object-tag wird also als standard-konformer Ersatz für den iframe genutzt.
Sehr löblich, würden das alle so machen, hörte endlich das Gequatsche über iframes auf.
Nun will ich per JavaScript eine neue XML-Datei in den object-Tag laden.
Kein Problem!
Gegeben sei ein <object>-Tag mit id="o".
Dann lädts Du eine neue Datei im MSIE mittels:
document.getElementById("o").object.location.href = dateiname;
In Geckobrowsern oder im Opera geht es einwenig anders, zunächst brauchst Du eine Referenz auf das Windosobjekt bzw. auf das Dokumentobjekt der Datei im <object>-tag, die mußt Du dir erzeugen, indem in den im <object>-tag geladenen Dateien folgender Funktionsaufruf geschieht:
if (this!=top) parent.sendObjRef(window, this.document);
Die Funktion steht - wie Du leicht erkennen kannst in der Datei, die den <object>-tag enthält, oder ist dort eingebunden:
function sendObjRef(obj1, obj2)
{
myObj1=obj1;
myObj2=obj2;
}
Nun ist myObj1 die Referenz auf das Windowsobjekt und myObj2 die auf das Dokumentobjekt. Eigentlich sollte die auf das Windowsobjekt ja reichen, hätte Opera hier keinen Bug.
Im Mozilla, Firefox und anderen Geckobrowsern lädts Du die neue Datei nun mittels:
myObj1.location.href = dateiname;
Leider verbindet Opera hier die Eigenschaft location nicht mit dem Windowsobjekt, sondern mit dem Dokumentobjekt, sodaß eine weitere, unnötige Browserweiche eingefügt werden muß, damit Opera veranlaßt wird mittels:
myObj2.location.href = dateiname;
die neue Datei zu laden.
Gruß
Avalon