Zugriff auf anderes Fenster????Hilfe????
Kathleen
- javascript
0 Stefan Bach0 Kathleen0 Stefan Bach0 Kathleen
Hallo, ich hab da ein Problem mit dem Zugriff auf ein anderes Framefenster? Hab schon vieles darüber gelesen, es aber wahrscheinlich nicht ganz verstanden, vielleicht kann mir jemand helfen!
Aus einem Frame heraus folgender Aufruf:
<script language="javascript">
window.open('Campus_H<%=datei%>.html','Karte','');
var hilfe=window.Karte.document.Plan.getSVGDocument();
var hilfe2=hilfe.getElementById('<%=raumID%>');
hilfe2.set.Attribute("class","farbwechsel");
</script>
Dabei wird also zuerst in dem Frame "Karte" eine Datei z.B. Campus_H101.html aufgerufen. Dann möchte ich auf dieses Frame zugreifen und dann weiter den Zugriff auf das Document Plan und dann die SVG-Datei! Aber der Zugriff mit window.[framename]... funktioniert nicht, auch mit parent hab ich den Zugriff nicht geschafft, was hab ich da wiedermal falsch gemacht???
Ich bin dankbar für jede Idee!
verzweifelte Kathleen
Hallo,
<script language="javascript">
window.open('Campus_H<%=datei%>.html','Karte','');
var hilfe=window.Karte.document.Plan.getSVGDocument();
var hilfe2=hilfe.getElementById('<%=raumID%>');
hilfe2.set.Attribute("class","farbwechsel");
</script>
So klappt das nicht. Du musst den Rückgabewert von window.open in einer Variable speichern:
kartenfenster = window.open (...);
Dann geht folgendes:
hilfe = kartenfenster.document...
Viele Grüße,
Stefan
kartenfenster = window.open (...);
Dann geht folgendes:
hilfe = kartenfenster.document...
Viele Grüße,
Stefan
Hallo Stefan, danke für die schnelle Antwort!
Aber das was ich will funktioniert immer noch nicht, mein neuer Quellcode:
<script language="javascript">
var kartenfenster=window.open('Campus_H<%=datei%>.html','Karte','');
alert(kartenfenster);
var hilfe=kartenfenster.document.Plan.getSVGDocument();
alert(hilfe);
var hilfe2=hilfe.getElementById('<%=raumID%>');
hilfe2.set.Attribute("class","farbwechsel");
kartenfenster.close();
</script>
Als erstes wird alert(kartenfenster); abgearbeitet, zumindest offensichtlich, da wird "objekt" ausgegeben, nach klick auf Okay, wird die Karte erst geladen und dann passiert nichts mehr, auch keine Fehlermeldung. Hmmm, aber eigentlich muß doch noch alert(hilfe) ausgegeben werden die Farbe des Elementes geändert und dann die Grafik wieder geschlossen werden, warum nicht!
Hab's auch schon mit fokus(); probiert klappt auch nicht.
und bei alert(kartenfenster.propertyName); sagt er undefiniert, wieso muß da nicht der Name des Frames ausgegeben werden?
Kathleen
Hallo,
<script language="javascript">
var kartenfenster=window.open('Campus_H<%=datei%>.html','Karte','');
alert(kartenfenster);
var hilfe=kartenfenster.document.Plan.getSVGDocument();
alert(hilfe);
var hilfe2=hilfe.getElementById('<%=raumID%>');
hilfe2.set.Attribute("class","farbwechsel");
kartenfenster.close();
</script>Als erstes wird alert(kartenfenster); abgearbeitet, zumindest offensichtlich, da wird "objekt" ausgegeben, nach klick auf Okay, wird die Karte erst geladen und dann passiert nichts mehr, auch keine Fehlermeldung. Hmmm, aber eigentlich muß doch noch alert(hilfe) ausgegeben werden die Farbe des Elementes geändert und dann die Grafik wieder geschlossen werden, warum nicht!
Da die zweite Alertmeldung nicht erscheint passierte bei der Abarbeitung von var hile=... wohl ein Fehler.
Du könntest vielleicht einen Timeout setzen und erst nach Ablauf von diesem die Bearbeitung fortsetzen. Möglicherweise existiert kartenfenster.document.Plan ja noch gar nicht, während du darauf zugreifen willst. (So eine Seite muss ja auch erst mal laden.)
Teste doch mal die Existenz des Objekts und gib das Resultat via alert aus.
und bei alert(kartenfenster.propertyName); sagt er undefiniert,
Du solltest kartenfenster.name ausgeben lassen. Dann erählst du 'Karte'. In kartenfenster ist ein Window Objekt enthalten. Dies hat alle Eigenschaften die unter http://selfhtml.teamone.de/javascript/objekte/window.htm gelistet sind.
Viele Grüße,
Stefan
Hallo Stefan, hmmm das Problem läßt sich einfach nicht beheben, grrr!
Hab auch schon einiges mit dem Admin hier von der FH probiert, auch kein erfolg!
Er stürzt immer bei Hilfe ab,aber warum?
Da die zweite Alertmeldung nicht erscheint passierte bei der Abarbeitung von var hilfe=... wohl ein Fehler.
korrekt!
In dem HTML_dokument ist es folgend deklariert:
<embed width="500" height="230" name="Plan" src="svg/plaene/haus1/h1_00og.svg" type="image/svg-xml">
in eine Tabelle eingeschachtelt, nun haben wir auch
den Zugriff nochmal umgeändert in:
var hilfe=kartenfenster.document.embeds["Plan"].getSVGDocument();
auch negativ, zumal ich schon den Aufruf document.Plan.getSVGDocument verwendet habe allerdings aus der HTML-Datei in dem Fenster Karte, funktioniert bestens!
Also muß doch den Knackpunkt immer noch am Kartenfenster liegen oder?
Du könntest vielleicht einen Timeout setzen und erst nach Ablauf von diesem die Bearbeitung fortsetzen. Möglicherweise existiert kartenfenster.document.Plan ja noch gar nicht, während du darauf zugreifen willst. (So eine Seite muss ja auch erst mal laden.)
Joooooo, das hab ich auch schon probiert, auch nicht funktioniert!
Hab auch, erst Grafik geladen, und dann mit Hyperlink neue Datei aufgerufen und da erst den zugriff gestartet, auch nicht funktioniert!
Teste doch mal die Existenz des Objekts und gib das Resultat via alert aus.
»»
Welches Objekt?
Wie?
Du solltest kartenfenster.name ausgeben lassen. Dann erählst du 'Karte'. In kartenfenster ist ein Window Objekt enthalten. Dies hat alle Eigenschaften die unter http://selfhtml.teamone.de/javascript/objekte/window.htm gelistet sind.
»»
Hmmm, das klappt!
Viele Grüße,
Stefan
Danke, für die Ideen, auch wenn's nicht funktioniert, so hab ich doch einiges versucht, grrrr zu dumm aber auch, hab mir das so einfach vorgestellt!
Irgendein Haken muß da doch sein?????*grübel*
Danke für Deine Hilfe
Gruß Kathleen
Hallo,
Hallo Stefan, hmmm das Problem läßt sich einfach nicht beheben, grrr!
Nur nicht aufgeben. Es wäre auch mal sehr hilfreich, wenn du einen Link zu einer Beispielseite schicken würdest.
Teste doch mal die Existenz des Objekts und gib das Resultat via alert aus.
»»
Welches Objekt?
kartenfenster.document.Plan oder alternativ einfach mal kartenfenster.document, wenn das nicht vorhanden sein sollte, dann kann sein Unterobjekt natürlich auch nicht existieren.
Wie?
http://selfhtml.teamone.de/javascript/sprache/objekte.htm#existenzabfrage
Irgendein Haken muß da doch sein?????*grübel*
Versuch mal dein JavaScript welches auf das Plan Objekt zugreift testweise in dem Quelltext des neugeöffneten Fensters unterzubringen. (Aufruf durch body onLoad.)
Wenn von dort der Zugriff auf document.Plan klappt, dann sollte es von dem Parentfenster auch gehen. Außer der Browser lässt dies aus Sicherheitsgründen nicht zu.
Liegen die Parentseite und die Seite welche im Fenster angezeigt wird auf der selben Domain oder ist diese unterschiedlich? Es gibt da bestimmte Sicherheitsregeln, in wie weit Fenster sich untereinander kontrollieren dürfen. Diese Regeln habe ich allerdings nicht auswendig im Kopf. Frag vielleicht einfach noch mal gezielt danach.
Viele Grüße,
Stefan