Javascript setInterval auf Mac geht nicht
grab
- javascript
folgende Funktion geht auf dem PC einwandfrei. Auf dem Mac allerdings wird die von setInterval aufgerufene Funktion nicht ausgeführt. Jemand ne Lösung?? hier das script
function loadPicture (file) {
tarfile = file;
im = new Image();
im.src = tarfile;
intV = setInterval(checkPicture,10);
}
function checkPicture () {
alert("v1"); // wird nicht aufgerufen
if (im.height > 0) {
clearInterval(intV);
alert(im.height);
}
}
Hallo grab
folgende Funktion geht auf dem PC einwandfrei. Auf dem Mac allerdings wird die von setInterval aufgerufene Funktion nicht ausgeführt. Jemand ne Lösung?? hier das script
Es gibt das Event onload.
function loadPicture (file) {
tarfile = file;
im = new Image();
im.onload = function () { alert(this.src + ' fertig');};
im.src = tarfile;
intV = setInterval(checkPicture,10);
}
Du solltest auch keine globalen Variabeln verwenden sowas kann in's Auge gehen - alle Variabeln mit var deklarieren.
Struppi.
klappt so nicht, komme aus dem Flash-Bereich, deswegen hab ichs mal so geschrieben
function loadPicture (file) {
var im = new Image();
im.onLoad = function () {
buildWindow(file,this);
}
im.src = tarfile;
}
function buildWindow (file,im) {
alert("bin da"); // wird nicht ausgeführt
}
klappt so nicht, komme aus dem Flash-Bereich, deswegen hab ichs mal so geschrieben
im.onLoad = function () {
Das habe ich auch so nicht geschrieben. JS ist case sensitive im gegensatz zu HTML.
Struppi.
function loadPicture (file) {
var tfile = file;
var im = new Image();
im.onload = buildWindow(tfile,im);
im.src = tarfile;
}
function buildWindow (file,im) {
alert(im.height); // ausgabe 0
}
habs jetzt so und er gibt mir 0 zurück ?????
function loadPicture (file) {
var tfile = file;
var im = new Image();
im.onload = buildWindow(tfile,im);
im.src = tarfile;
}function buildWindow (file,im) {
alert(im.height); // ausgabe 0}
habs jetzt so und er gibt mir 0 zurück ?????
Auch das schrieb ich nicht.
du musst onload bzw. onerror eine Funktionreferenz zuweisen, da oben weißt du dem event den Rückgabewert der Funktion buildWindow zu (der ist undefiniert).
Struppi.
function loadPicture (file) {
var im = new Image();
im.tfile = file;
im.onload = function () {
buildWindow(this.tfile,this);
}
im.src = file;
}
so gibt er mir auch 0 zurück ?????
so gibt er mir auch 0 zurück ?????
Was da jetzt falsch ist weiß ich nicht, bei mir funktioniet das
http://home.arcor.de/struebig/js/test/testOnload.htm
Struppi.
liegts vielleicht doch am Mac, dein Beispiel geht bei mir auch nicht....
Hi,
intV = setInterval(checkPicture,10);
Sieht das so aus, wie es in selfHTL bei setInterval beschrieben steht? Ich denke nicht ... =;-)
Gruß, Cybaer
Hi,
intV = setInterval(checkPicture,10);
Der erste Parameter von setInterval ist ein String, der das im Intervall auszuführende Script enthält.
Bei Dir steht anstelle des Strings ein Funktionsobjekt, kein Funktionsaufruf (der hätte Klammern: checkPicture()).
Und selbst wenn Du das zu
intV = setInterval(checkPicture(),10);
abänderst, dann müßte die Funktion checkPicture das im Intervall auszuführende Script zurückgeben.
checkPicture() hat aber keinerlei Rückgabe.
Soll etwa die Funktion checkPicture() im Intervall ausgeführt werden?
Dann müßte das m.E. so aussehen:
intV = setInterval("checkPicture()",10);
sprich: ein String, der den Funktionsaufruf checkPicture() enthält.
cu,
Andreas
ok hab ich kappiert, funzt auch aber wie lösche ich das interval dann??
function begin() {
intV = window.setInterval("check()",100);
}
function check () {
window.clearInterval(intV);
}
klappt nicht...
hi,
function begin() {
intV = window.setInterval("check()",100);
}
wenn intV eine lokale variable innerhalb deiner funktion begin() ist,
function check () {
window.clearInterval(intV);
}
dann ist intV in check() natürlich nicht bekannt.
lies in selfhtml über den unterschied zwischen lokalen und globalen variablen nach, oder vielleicht besser noch, arbeite mit funktionsparametern/-rückgabewerten.
gruss,
wahsaga
Trotz allem muss man sagen, dass setInterval oder setTimeout völlig unbrauchbar sind um das laden eines Bildes zu überprüfen (was passiert, wenn der Server ausgefallen ist? endlosschleife).
onload und onerror sind vorhanden und funktionieren auf fast allen Browsern.
(nicht im IE 3 und älteren Operas)
Struppi.
intV = setInterval(checkPicture,10);
Benutze keine Pfandhasy-Syntax.