Javascript 光标指向“等待”,而“时间消费者”在返回标准后运行
问题是:单击复选框后,我将光标更改为等待,但只有在大约6秒钟后,等待光标才会看到。如何避免这6秒的停顿 非常感谢 维基 代码编辑Javascript 光标指向“等待”,而“时间消费者”在返回标准后运行,javascript,Javascript,问题是:单击复选框后,我将光标更改为等待,但只有在大约6秒钟后,等待光标才会看到。如何避免这6秒的停顿 非常感谢 维基 代码编辑 <html> <head> <title>Cursor-Test</title> <script type="text/javascript"> var k = 0; var t1 = 0; var t2 = 0; function cursor
<html>
<head>
<title>Cursor-Test</title>
<script type="text/javascript">
var k = 0;
var t1 = 0;
var t2 = 0;
function cursor_wait() {
document.body.style.cursor = 'wait';
t1 = (new Date()).getTime();
k = k+1;
}
function cursor_clear() {
document.body.style.cursor = 'default';
}
function st() {
setTimeout(calc,500); //wait a bit
}
//long time action
function calc() {
ta = (new Date()).getTime();
var dummy = 0;
k = k+1;
for (var i=0; i<1000000;i++) {
for (var z=0; z<2000;z++) {
dummy = dummy + z + i;
}
}
tb = (new Date()).getTime();
tr = tb-ta;
cursor_clear();
t2 = (new Date()).getTime();
alert("nach clear, k="+k+" all time:"+(t2-t1)+" computing time:"+tr);
}
</script>
</head>
<body>
<h2>Cursor ändern: standard->wait->länger dauernde Aktion->standard</h2>
<div>wait-cursor erst nach ca. 6 sec</div>
<form name="some_form" action="index.php" method="get">
<input type="checkbox" name="nameless" value="5"
onMouseDown="cursor_wait()" onMouseUp="st()" /> Five
</form>
</body>
</html>
首先,将c设置为光标样式对您没有任何好处。即使定义了c,它也将是一个字符串。更改c的值只会使它指向不同的字符串,而不会更改光标的样式。您可能需要执行以下操作:
var c = document.body.style;
var t1 = 0;
var t2 = 0;
function cursor_wait() {
c.cursor = 'wait';
t1 = (new Date()).getTime();
k = k+1;
}
function cursor_clear() {
c.cursor = 'default';
}
//long time action
function calc() {
setTimeout(cursor_clear, 6000);
}
我删除了其他代码,以便在6秒后清除光标,而不阻塞用户界面时更容易看到可以执行的操作。当代码消耗用户的CPU时,浏览器不会执行任何其他操作。您希望光标何时从“等待”->“默认”转到“等待”?您是否希望它在循环完成后进入该状态?你想达到什么目的?谢谢你的回答。现在我已经编辑了代码,请参见上文。原始变量c=document.body.style.cursor为null,因为此时未创建document.body对象。mouseup事件现在导致调用一点超时,然后执行计算。