"is not a function" bei aufruf einer funktion in anderem fenster
miazma
- javascript
0 Don P
hallo.
ich hab gegoogelt, ich hab hier im forum gesucht, komme aber einfach nicht dahinter, wo das problem liegt:
ich habe eine seite, von welcher aus ich ein neues fenster via javascript öffne (die fakultative attributliste bei open() lass ich mal weg):
var newWindow;
newWindow = open('newwindow.html', 'Neues Fenster');
newWindow.focus();
und als nächstes will ich in newwindow.html eine funktion aufrufen:
newWindow.foo("bar");
welche dort wiefolgt definiert ist:
<head>
<script type="text/javascript">
var selectedIdXYZ = null;
function foo(bar) {
alert(bar);
}
</script>
</head>
im internet explorer funktioniert das tadellos. im firefox 2.0 hingegen tut sich da gar nichts und die ErrorConsole meldet mir beim öffnen des fensters "newWindow.foo() is not a function".
da ist dann leider endstation für mich. habe da und dort was davon gelesen, dass man sicherstellen solle, dass die funktionen geladen seien, aber wie das gehen soll, darüber schweigen sich alle aus.
any help?
Hallo,
var newWindow;
newWindow = open('newwindow.html', 'Neues Fenster');
newWindow.focus();
Es steht geschrieben, dass der Name des Fensters "nur aus Buchstaben, Ziffern und Unterstrich bestehen darf". Es darf also nicht 'Neues Fenster' heißen.
im internet explorer funktioniert das tadellos.
Auch nicht immer.
da ist dann leider endstation für mich. habe da und dort was davon gelesen, dass man sicherstellen solle, dass die funktionen geladen seien, aber wie das gehen soll, darüber schweigen sich alle aus.
Das ist genau der Punkt. Während newwindow.html noch am Laden ist, versucht dein Script bereits newWindow.foo("bar") aufzurufen. Das kann schief gehen, auch im IE.
Die einzig brauchbare Möglichkeit, die ich sehe ist, im neuen Fenster eine Variable zu setzen, nachdem foo() geladen ist und dann erst nach gewisser Verzögerung newWindow.foo("bar") aufzurufen, z.B. mit Hilfe von setTimeout().
Gruß, Don P