Ich habe diese jQuery auf einer Seite bekommen:Warum funktioniert mein jQuery-Cursor-Code nicht?
<script>
$(document).ready(function() {
$("#btnGetData").click(function() {
var _begdate = $("#datepickerFrom").val();
var _enddate = $("#datepickerTo").val();
var _unit = $("#unitName").text();
document.body.style.cursor = 'wait';
$.ajax({
type: 'GET',
url: '@Url.RouteUrl(routeName: "QuadrantData", routeValues: new { httpRoute = true, unit = "un", begdate = "bd", enddate = "ed" })'
.replace("un", encodeURIComponent(_unit))
.replace("bd", encodeURIComponent(_begdate))
.replace("ed", encodeURIComponent(_enddate)),
contentType: 'text/plain',
cache: false,
xhrFields: {
withCredentials: false
},
success: function (returneddata) {
$("body").html(returneddata);
},
error: function() {
console.log('hey, boo-boo!');
}
});
document.body.style.cursor = 'pointer';
});
});
</script>
Bitte beachte, dass ich versuche, einen Wartecursor früh im Click-Handler zu erstellen:
document.body.style.cursor = 'wait';
... und dann wieder zurückkehren der Standard am Ende:
document.body.style.cursor = 'pointer';
Es funktioniert jedoch nicht - der Cursor ändert sich nie. Der Code funktioniert zwar (der Ajax-Aufruf wird erfolgreich abgeschlossen), aber der Cursor bleibt stonefaced und der Benutzer fragt sich, ob etwas passiert.
Was muss ich noch tun, damit sich der Cursor in eine Wartehaltung verwandelt?
Geschieht dies wenn sich die Maus auch bewegt oder nur wenn die Maus bewegungslos ist? Ich habe diese Technik ausprobiert und der Cursor ändert sich für mich erst, wenn Mauszeiger verschoben wird. In einigen Fällen musste ich also zu einem .gif wechseln –
Sie müssen 'document.body.style.cursor = 'pointer';' zum 'Erfolg hinzufügen() 'Callback-Funktion (nach dem Setzen des' body's HTML-Inhalts) – ochi
@ochi: Warum sollte das (falsche Platzierung von "Zeiger") auch verhindern, dass das "Warten" erscheint? Auch wenn es im Erfolgsfall nur zurückkehrte, bestünde nicht die Gefahr, dass der Wartecursor im Falle eines Fehlers für immer fortdauert? –