gpt4 book ai didi

javascript - 从 javascript 更改 html 文档的光标类型

转载 作者:太空狗 更新时间:2023-10-29 15:33:53 25 4
gpt4 key购买 nike

假设我有一个 javascript 方法,它需要很长时间才能完成,而根本没有任何用户反馈。在我的例子中,它正在对表元素中的行进行排序(所有内容都在 DOM 中;只有当有很多行时才需要太长时间),但它可能会做任何事情。我想在运行时显示“进度”光标。这是我目前拥有的,但我也尝试了其他几种方法:

// SORT   
document.body.style.cursor = "progress";
MyLongRunningMethod(); //blocks for 10-15 seconds before returning
document.body.style.cursor = "auto";

不幸的是,没有任何反应。 MyLongRunningMethod() 做事正确,但光标永远不会改变。我的想法是浏览器需要等待方法返回才能处理窗口环境生成的光标更改消息,但这可能还有很长的路要走,即使它是真的我也不知道如何修复它。

还有其他想法吗?


[edit]:我认为我所有的背景故事都没有必要。如果您真的想阅读它,请检查修订历史。


最终结果

我最终使用了 RoBorg 的解决方案。它并没有像我最初想的那样弄乱代码,因为我可以保留函数声明就在那里 - 这就像添加一个内联作用域 block 一样。

有趣的是,在 Firefox 上我发现这意味着我根本不需要更改光标。我发现在添加 setTimeout 调用后,我有时会在设置进度光标之前看到一个等待光标,所以我注释掉了我的光标代码。事实证明,使用 setTimeout 将其推出点击事件处理程序本身的某些东西允许 FireFox 自己弄清楚光标应该改变。不幸的是,IE 不是那么聪明,所以我确实把光标代码放回去了。

这证实了我的信念,即光标更改是此处的适当操作——只要有机会,浏览器无论如何都会这样做。我真的不想为一个我知之甚少的页面在 DOM 中添加和删除新项目(比如某种类型的繁忙图像)。无论页面使用何种视觉设计,脚本都应匹配。

最后,Chrome 让整件事变得无关紧要。使用相同的数据,Chrome 在不到 5 秒的时间内完成了 IE 和 Firefox 需要 10 到 15 秒才能完成的工作。所以他们的 javascript 引擎确实更快。我等不及 Firefox 3.1 引擎了。不幸的是,这里的人们仍然主要使用 IE6。

最佳答案

使用计时器是不可能的吗?

document.body.style.cursor = "progress";

setTimeout(function()
{
SortTable(cell.cellIndex, dir, sortType);
document.body.style.cursor = "auto";
}, 10);

关于javascript - 从 javascript 更改 html 文档的光标类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/640303/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com