Javascript jQuery块用户界面-更新“;请稍候……”;带“的信息;仍在工作……”;在X时间之后
我在文档中找不到关于如何为长时间运行的进程更新块UI文本的信息。例如,根据选择的选项保存对表单的更改将触发各种过程,其中一些过程可能需要一些时间。我希望最初的block ui消息说“正在处理…”,然后说15秒后,让它说“仍在工作…”,这样用户就不会认为页面没有时间了。我已经在gmail中看到了这一点,并希望复制这一功能。对此有什么指导吗?一些可能对你有帮助的东西是。它允许您在N毫秒后运行一些代码。有一个匹配函数,它将从队列中“删除”一个Javascript jQuery块用户界面-更新“;请稍候……”;带“的信息;仍在工作……”;在X时间之后,javascript,jquery,jquery-plugins,Javascript,Jquery,Jquery Plugins,我在文档中找不到关于如何为长时间运行的进程更新块UI文本的信息。例如,根据选择的选项保存对表单的更改将触发各种过程,其中一些过程可能需要一些时间。我希望最初的block ui消息说“正在处理…”,然后说15秒后,让它说“仍在工作…”,这样用户就不会认为页面没有时间了。我已经在gmail中看到了这一点,并希望复制这一功能。对此有什么指导吗?一些可能对你有帮助的东西是。它允许您在N毫秒后运行一些代码。有一个匹配函数,它将从队列中“删除”一个setTimeout处理程序 使用这些工具,您可以按如下方式
setTimeout
处理程序
使用这些工具,您可以按如下方式构造代码:
var timeoutID;
function startBlocking() {
// do your stuff...
$.blockUI({ message: "Processing..." });
timeoutID = setTimeout(function() {
$.blockUI({ message: "Still working..." });
}, 15000);
}
function stopBlocking() {
// This is called whenever your processing is done
clearTimeout(timeoutID);
}
这样,仅当流程尚未完成时,消息才会在15秒后更改。当它完成时,它有效地阻止了
$.blockUI({message:“仍在工作…”})
的运行。你试过了吗?我试过了,这确实有效,但我不知道如何确定经过了多少时间。我做的插入点几乎立即触发。我记得在prototype中有一个ajax更新程序,其行为类似于“心跳”,但我不知道在jQuery或Javascript中有类似的情况;也许我没有使用正确的搜索词,我没有意识到我可以像那样利用setTimeout。现在添加逻辑。使用setInterval()也是一种可能的解决方案吗?@HPWD您可以使用setInterval
,但通常使用setTimeout
是一个更好的主意,特别是如果您不想让它重复一次又一次的话(但即使这样,使用“嵌套的”setTimeout
s也是一个非常好的选择)。