neues Fenster öffnen und Inhalte einfügen
duafjen
- javascript
Hallo,
ich habe mir folgende Funktion erdacht:
function fenster(text){
fen= open("result.htm","fen","height=480, width=640");
fen.document.getElementById("text").innerHTML=text;
}
Diese Funktion soll die Seite result.htm in einem neuen Fenster öffnen und dort die Inhalte der Variable text in ein Tag mit der ID "text" schreiben. Leider funktioniert dies nicht. Die Javascript Konsole meldet "Fehler: fen.document.getElementById("text") has no properties"
Kann mir jemand helfen den Fehler zu finden? Im Vorraus schon mal vielen Dank.
Hallo,
ich habe mir folgende Funktion erdacht:
function fenster(text){
fen= open("result.htm","fen","height=480, width=640");
fen.document.getElementById("text").innerHTML=text;
}Diese Funktion soll die Seite result.htm in einem neuen Fenster öffnen und dort die Inhalte der Variable text in ein Tag mit der ID "text" schreiben. Leider funktioniert dies nicht. Die Javascript Konsole meldet "Fehler: fen.document.getElementById("text") has no properties"
Kann mir jemand helfen den Fehler zu finden? Im Vorraus schon mal vielen Dank.
Du hast ein Timingproblem. Die Anweisung window.open gibt ein window Objekt zurück und startet das Öffnen des neuen Fensters. Tausendstelsekunden später versuchst Du bereits auf das document Objekt des neuen Fensters zuzugreifen. Das scheitert, wenn das neue Fenster noch gar nicht soweit ist, ein document Objekt zu haben.
Die beste Lösung wäre, das Verändern des Inhalts per JavaScript im Quellcode des neuen Fensters per window.onload anzustoßen. Dazu müsste in den Quelltext des neuen Fensters:
<script type="text/javascript">
<!--
window.onload = function() {
opener.setzeText();
};
//-->
</script>
Und im aufrufenden Fenster dann:
<script type="text/javascript">
<!--
var text = "Hallo Welt";
var fen;
function fenster(){
fen = window.open("result.htm","fen","height=480, width=640");
}
function setzeText() {
fen.document.getElementById("text").innerHTML = text;
}
//-->
</script>
Die Variable text müsste im aufrufenden Fenster global sein.
Sollte das keine Option sein, kannst Du nur einen ausreichend großen Moment warten, bis das neue Fenster geladen ist. Dazu im aufrufenden Fenster:
<script type="text/javascript">
<!--
var fen;
function fenster(text){
fen = window.open("result.htm","fen","height=480, width=640");
window.setTimeout("setzeText('" + text + "')", 2000);
}
function setzeText(text) {
fen.document.getElementById("text").innerHTML = text;
}
//-->
</script>
viele Grüße
Axel