Sleep/Wait?
timmy
- javascript
Hallo zusammen, gibt es eine möglichkeit in der unten geschriebenen do-while Schleife das Script 1 sec völlig anzuhalten bevor es wieder zum "do" rauf springt?
********************************************
function alertInhalt()
{
xmlhttp.open("HEAD", "http://localhost/1.txt",true);
xmlhttp.onreadystatechange=function()
{
do
{
if (xmlhttp.readyState==4)
{
if (xmlhttp.status==200) self.close()
}
}
while (xmlhttp.readyState!=4)
}
xmlhttp.send(null)
}
Hallo timmy,
nein. Du kannst aber das Innere der Schleife in eine Funktion packen, die sich am Ende mit "window.setTimeout" selbst aufruft.
Gruß, Jürgen
Hallo timmy,
nein. Du kannst aber das Innere der Schleife in eine Funktion packen, die sich am Ende mit "window.setTimeout" selbst aufruft.
Gruß, Jürgen
vielen dank, das ist wirklich eine gute idee...
vielen dank, das ist wirklich eine gute idee...
Nach wievor die Frage, warum?
Deine do while Schleife ist hier überflüssig.
Struppi.
vielen dank, das ist wirklich eine gute idee...
Nach wievor die Frage, warum?
Deine do while Schleife ist hier überflüssig.Struppi.
ja, ich weiss...ich habe gemerkt, dass ich auch einfach mit dem timeout die funktion erneut aufrufen kann und so auch eine check funktion machen kann, die überprüft, ob die datei schon vorhanden ist
vielen dank, das ist wirklich eine gute idee...
Nach wievor die Frage, warum?
Deine do while Schleife ist hier überflüssig.Struppi.
mist, dein Post nicht richtig gelesen.
Der Code ist in einem Pop up drin im Intranet. Sobald man auf Submit drükt geht dieses auf. Nun muss es so lange offen bleiben bis es eine bestimmte Datei in einem Bestimmten Ordner gibt.
mist, dein Post nicht richtig gelesen.
Der Code ist in einem Pop up drin im Intranet. Sobald man auf Submit drükt geht dieses auf. Nun muss es so lange offen bleiben bis es eine bestimmte Datei in einem Bestimmten Ordner gibt.
Das kannst du aber doch nicht mit der While schleife testen. Dazu musst du peroidisch die ganze Funktion aufrufen, nachdem onreadystatechange zum letzten mal aufgerufen wird.
Struppi.
Das kannst du aber doch nicht mit der While schleife testen. Dazu musst du peroidisch die ganze Funktion aufrufen, nachdem onreadystatechange zum letzten mal aufgerufen wird.
mmh, da hast du allerdings auch recht, der kommt in ne endlosschleife, wenn onreadystatechange nicht mehr geprüft wird. ich habe nun folgendes gemacht, aber komischerweise kommt der in ne 100% Endlosschleife...ich weiss gerade nicht mehr weiter. Vor allem krieg ich die Meldung:Stack Overflow on line 24. Dort ist: xmlhttp.send(null);
********************************************
<script type="text/javascript" language="javascript">
var xmlhttp = false;
function macheRequest(url)
{
{
try
{
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e)
{
try
{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
if (!xmlhttp)
{
alert('Ende :( Kann keine XMLHTTP-Instanz erzeugen');
return false;
}
xmlhttp.onreadystatechange = alertInhalt;
xmlhttp.open('HEAD', url, true);
xmlhttp.send(null);
}
function alertInhalt() {
var url = "http://rabmed98/1.txt";
if (xmlhttp.readyState == 4)
{
if (xmlhttp.status == 200)
{
self.close()
}
else
{
window.setTimeout(macheRequest(url), 2000)
}
}
else
{
window.setTimeout(macheRequest(url), 2000)
}
}
</script>
<span
style="cursor: pointer; text-decoration: underline"
onclick="macheRequest('http://rabmed98/1.txt')">Einen Request absetzen
</span>
Hast du dir mal angeschaut, wie oft diese Funktion augerufen wird?
Es readyState ist 4, d.h. viermal, d.h. du hast hier 4 mal den Timeout neu aufgerufen. Während dieser Zeit wird die Funktion ja bereits wieder neu aufgerufen usw.
Du darfst den Timeout erst setzen, wenn readyState == 4 ist, dann ist, soweit ich dass seh, der letzte Aufruf erfolgt. und dann kannst du den Timeout aufrufen.
Struppi.
Super, so funktionierts, vielen Dank!
Wenn JavaScript nun den IE schliessen will kommt immer eine Meldung mit JA oder NEIN. Kann man diese auch überspringen, also dass er Sich selber schliesst ohne Nachzufragen?
timmy
Wenn JavaScript nun den IE schliessen will kommt immer eine Meldung mit JA oder NEIN. Kann man diese auch überspringen, also dass er Sich selber schliesst ohne Nachzufragen?
Jein.
Eigentlich ist dies eine Sicherheitsabfrage, aber wie der IE so ist, hat er auc hier eine Lücke:
window.opener = window;
window.close();
Struppi.
Hallo zusammen, gibt es eine möglichkeit in der unten geschriebenen do-while Schleife das Script 1 sec völlig anzuhalten bevor es wieder zum "do" rauf springt?
Weiso brauchst du das?
xmlhttp.onreadystatechange=function()
Die Funktion wird doch aufgerufen wenn alles fertig ist.
Struppi.