Event durch Frame "abfangen"
Alexander Müller
- javascript
Hallo liebe Community,
ich hoffe, ihr könnt mir bei meinem Problem helfen.
Ich hab schon sehr lange nach einer Lösung gesucht, aber konnte keine finden.
Um mein Problem besser zu verdeutlichen, poste ich hier noch den Code der 3 Seiten.
frame.htm:
---------
<frameset rows="100,*">
<frame src="keyview.htm" name="keyview">
<frame src="info.htm" name="info">
</frameset>
keyview.htm:
-----------
<script>
parent.frames["info"].onkeypress = function(key) {
alert(key.which)
}
</script>
info.htm:
--------
Du liest z.Z. den Inhalt der Datei <i>info.htm</i>. ;-)
Wenn ich jetzt ein onkeypress-Event an info.htm sende, möchte ich, dass "keyview.htm" von diesem erfährt. Die Datei "info.htm" soll aber unverändert bleiben.
Ich habe es in diesem Code mit "parent.frames["info"].onkeypress" versucht, was allerdings nicht funktioniert. Genauso wie die anderen tausend Versuche. ;)
Ich bin mir nicht einmal mehr sicher, ob es überhaupt möglich ist.
Für einen Lösungsvorschlag wär' ich sehr dankbar. :-)
MfG
Alex
Hellihello Alex
Ich habe es in diesem Code mit "parent.frames["info"].onkeypress"
fehlt da nicht noch ein "document"? Du solltest durch testen erstmal schauen, dass Du den Frame erreichst. Ich meine, es sollt gehen.
frankx
Hallo Frank.
"document.parent.frames["css"].onkeypress" funktioniert leider auch nicht.
Du solltest durch testen erstmal schauen, dass Du den Frame erreichst. Ich meine, es sollt gehen.
Den Frame erreich' ich ohne Probleme. Ich hatte es schon mit "parent.frames["info"].location = "http://google.de"" überprüft.
MfG
Hellihello
Den Frame erreich' ich ohne Probleme. Ich hatte es schon mit "parent.frames["info"].location = "http://google.de"" überprüft.
genau, du bist dann in der location-eigenschaft. du willst aber inst document. testansatz, ein documenten-div by id zu holen und ihm innerHTML etwas zuzuweisen. kannst du das, kannst du auch eventhandler zuweisen, würde ich jetzt sagen.
parent.frames["info"].document.getElementById("meineid").innerHTML="wasneues";
oder besser vielleicht:
testVar=parent.frames["info"].document.getElementById("meineid");
alert(testVar);
testVar2=parent.frames["info"].document.getElementById("meineid").innerHTML;
alert(testVar2);
MfG
frankx
Hi ihr,
hab's jetzt endlich geschafft.
Das Problem war folgendes:
Zuerst wurde "keyview.htm" geladen. Diese Datei wollte dann schon auf info.htm zugreifen, obwohl die noch garnicht geladen war.
Ich habe dann die zwei Frameseiten anders herum laden lassen und siehe da... es funktioniert.
Da ich aber die Framereihenfolge beibehalten wollte, habe ich den event-Code einfach ein wenig schlafen lassen.
function time_info() {
parent.frames["info"].onkeypress = function(key) {
alert(key.which)
}
}
setTimeout("time_info()",1000)
Nach dieser Sekunde sollte info.htm für den Browser bekannt sein und die Events abfangen können.
Ahja, Fehlermeldungen und eine Referenz auf ein Online-Beispiel werde ich nächste Mal hinzufügen. :)
Danke für eure Problem-Teilnahme! :)
MfG
Alex
Das Problem war folgendes:
Zuerst wurde "keyview.htm" geladen. Diese Datei wollte dann schon auf info.htm zugreifen, obwohl die noch garnicht geladen war.
Um das zu vermeiden existiert der onload Event.
Struppi.
Das Problem war folgendes:
Zuerst wurde "keyview.htm" geladen. Diese Datei wollte dann schon auf info.htm zugreifen, obwohl die noch garnicht geladen war.
Um das zu vermeiden existiert der onload Event.
Danke, habe jetzt folgenden Code in "keyview.htm":
<script>
var i=0;
function time() {
parent.onload = function() {
alert("Genutzte Zeit zum Laden: "+ i*0.1 +" Sek.")
// Hier kommt dann der weitere Code hin...
}
i++;
setTimeout("time()",100)
}
time()
</script>
Funktioniert prima. :)
MfG
Ich habe es in diesem Code mit "parent.frames["info"].onkeypress" versucht, was allerdings nicht funktioniert. Genauso wie die anderen tausend Versuche. ;)
Dein code sollte so funktionieren, wenn nicht wären Fehlermeldungen und/oder die Information was du probiert hast, sinnvoll. Und evtl. eine Beispielseite online.
Struppi.