Mauszeiger ändern beim Ausführen einer Funktion
jovi
- javascript
hiho,
ich würde gerne den Mauszeiger beim Aufruf einer zeitintensiven Funktion ändern (Sanduhr) und nach Beendigung derselben wieder den Default-Zeiger verwenden.
Problem: ich bekomm's nicht hin *seufz*
Ich stelle es mir so vor:
function lange_berechnung() {
1. Mauszeiger wird Sanduhr
2. Berechnung durchführen
3. Mauszeiger wird wieder normal
}
thx4help
lg
jovi
Hi,
also schauen wir mal in SELFHTML:
Wo war das Problem bei dir?
MfG
Rouven
* Achtung, auch wenn es faktisch nur ein <body>-Element gibt bekommst du hier ein Array zurück, siehe Zugriffe im Beispiel...
** Einige Elemente (z.B. buttons) überschreiben die Cursor-Eigenschaft wieder; De Eigenschaft gilt z.B. im Firefox nicht für das gesamte Fenster sondern nur für den Teil, den der Body tatsächlich belegt.
Hi,
- Dann könntest du dir mit document.getElementsByTagName das <body>-Element besorgen*
Warum umständlich, wenn's auch document.body gibt ...
cu,
Andreas
hiho,
thx für die Antwort. Das Problem ist: so wie beschrieben funktioniert es nicht. Ich kann so zwar den Curso verändern aber nicht für den Zeitraum in der die Funktion ausgeführt wird. Warum? Keine Ahnung. Es geht, wenn ich den Cursor nicht zurück setze ... dann habe ich eine nette Sanduhr oder was auch immer ...
Stelle ich den Cursor aber am Ende der Funktion oder auch hinter dem Aufruf der Funktion wieder auf Default, dann tut sich nix ?!?
lg
jovi
Hi,
also schauen wir mal in SELFHTML:
- Mauszeiger
- Dann könntest du dir mit document.getElementsByTagName das <body>-Element besorgen*
- ...greifst dann auf dessen style-Objekt zu
- ...und setzt die cursor-Eigenschaft**
Wo war das Problem bei dir?
MfG
Rouven* Achtung, auch wenn es faktisch nur ein <body>-Element gibt bekommst du hier ein Array zurück, siehe Zugriffe im Beispiel...
** Einige Elemente (z.B. buttons) überschreiben die Cursor-Eigenschaft wieder; De Eigenschaft gilt z.B. im Firefox nicht für das gesamte Fenster sondern nur für den Teil, den der Body tatsächlich belegt.
Nachtrag:
hatte vor es so zu lösen:
am Anfang der Funktion: myBody.style.setAttribute("cursor","wait",false);
und am Ende dann:
myBody.style.setAttribute("cursor","default",false);
so geht es leider nicht. Stimmt es, dass mit dem Javascript-Aufruf alle Änderungen erst nach der Funktionsabarbeitung gemacht werden und da wird ja dann der Zeiger wieder zurück verwandelt ... wie oben geschrieben, wenn ich den Zeiger als Sanduhr lasse, dann klappt es.
lg
jovi
Lieber jovi,
myBody.style.setAttribute("cursor","wait",false);
warum nicht myBody.style.cursor = "wait" ?
Habe einmal etwas ausprobiert. Vielleicht nützt es Dir...
<html>
<head>
<title>Sanduhr-Test</title>
<script type="text/javascript">
function sanduhr(schalter) {
var myBody = document.body;
if (schalter == 'an') {
myBody.style.cursor = "wait";
alert("Sanduhr an! (Für 5 Sekunden)");
window.setTimeout("sanduhr('aus')", 5000);
} else {
myBody.style.cursor = "default";
alert("Sanduhr aus!");
}
}
</script>
<style type="text/css">
body { margin: 0; padding: 0; /* height: 100%; */ }
#seite { background: #f8f8f8; margin: 30px; height: 400px; }
#seite span { text-decoration: underline; }
</style>
</head>
<body>
<div id="seite">
<h1>Sanduhr-Test</h1>
<p>Wie sieht der Cursor aus? <span onclick="sanduhr('an')">Und jetzt?</span></p>
</div>
</body>
</html>
Liebe Grüße aus Ellwangen,
Felix Riesterer.
Hallo Felix,
hey ... super danke für die ausführliche Antwort. Dein Script funktioniert aber es nützt mir nichts ;-)
Nach vielen Versuchen, habe ich folgendes probiert:
Mein Test-Script macht folgendes:
1. Funktionsaufruf
2. Ein Testbild wird am Anfang der Funktion geändert
(document.images['Bild'].src = TestBild.src)
3. Die eigentliche Berechnung startet (Dauer ca. 3-5 Sekunden)
NUN DAS DUMME: Das Bild, welches sich mit der Zeile document.images['Bild'].src = TestBild.src ändern sollte, ändert sich nicht!!!
4. Berechnung ist zuende = Funktion abgearbeitet
5. ERST JETZT ÄNDERT sich das Bild !! obwohl die Aufruf dafür VOR der eigentlichen Berechnung kommt *grübel*
D.h. erst nachdem die Funktion ausgeführt und abgearbeitet ist, "macht" der Computer etwas ...
Es bringt leider auch nichts die Funktion in 2 Funktionen aufzusplitten ...
Es scheint: Nach dem Starten der Funktion(en), wird erst alles abgearbeitet und nach Beendigung der Berechnungen die Ausgabe auf dem Bildschirm gemacht ... Kann das so stimmen??? Wenn ja, dann ist es wohl zwecklos eine Berechnung "optisch" anzeigen zu lassen.
lg
jovi
Lieber jovi,
myBody.style.setAttribute("cursor","wait",false);
warum nicht myBody.style.cursor = "wait" ?
Habe einmal etwas ausprobiert. Vielleicht nützt es Dir...
<html>
<head>
<title>Sanduhr-Test</title>
<script type="text/javascript">
function sanduhr(schalter) {
var myBody = document.body;
if (schalter == 'an') {
myBody.style.cursor = "wait";
alert("Sanduhr an! (Für 5 Sekunden)");
window.setTimeout("sanduhr('aus')", 5000);
} else {
myBody.style.cursor = "default";
alert("Sanduhr aus!");
}
}
</script>
<style type="text/css">
body { margin: 0; padding: 0; /* height: 100%; */ }
#seite { background: #f8f8f8; margin: 30px; height: 400px; }
#seite span { text-decoration: underline; }
</style>
</head>
<body>
<div id="seite">
<h1>Sanduhr-Test</h1>
<p>Wie sieht der Cursor aus? <span onclick="sanduhr('an')">Und jetzt?</span></p>
</div>
</body>
</html>
>
> Liebe Grüße aus [Ellwangen](http://www.ellwangen.de/),
>
> Felix Riesterer.
Hallo jovi,
einige Browser (z.B. IE und FF) zeigen keine Änderungen an, solange Javascripte laufen. Du könntest dein Problem dadurch lösen, dass du den Mauszeiger änderst und das Rechenscript dann mit setTimeout etwas verzögert startest. Eine Verzögerung von 1 ms könnte schon reichen.
Gruß, Jürgen
hiho Jürgen,
DANKE :-))) so geht es ...
lg
jovi
Hallo jovi,
einige Browser (z.B. IE und FF) zeigen keine Änderungen an, solange Javascripte laufen. Du könntest dein Problem dadurch lösen, dass du den Mauszeiger änderst und das Rechenscript dann mit setTimeout etwas verzögert startest. Eine Verzögerung von 1 ms könnte schon reichen.
Gruß, Jürgen