为了带来更好的用户体验,需要实现当请求一个长操作时,加载遮罩层,缓解等待焦虑感
于是先到这样的代码:
<!DOCTYPE html> <html> <head> <base href="http://demos.telerik.com/kendo-ui/diagram/index"> <style>html { font-size: 12px; font-family: Arial, Helvetica, sans-serif; }</style> <title></title> <link rel="stylesheet" href="http://kendo.cdn.telerik.com/2017.2.504/styles/kendo.common.min.css"> <link rel="stylesheet" href="http://cdn.kendostatic.com/2015.1.429/styles/kendo.uniform.min.css" /> <link rel="stylesheet" href="http://cdn.kendostatic.com/2015.1.429/styles/kendo.dataviz.min.css" /> <link rel="stylesheet" href="http://cdn.kendostatic.com/2015.1.429/styles/kendo.dataviz.uniform.min.css" /> <script src="http://code.jquery.com/jquery-1.12.3.min.js"></script> <script src="http://kendo.cdn.telerik.com/2017.2.504/js/kendo.all.min.js"></script> <link rel="stylesheet" href="http://kendo.cdn.telerik.com/2017.2.504/styles/kendo.rtl.min.css"> <link rel="stylesheet" href="http://kendo.cdn.telerik.com/2017.2.504/styles/kendo.default.min.css"> <link rel="stylesheet" href="http://kendo.cdn.telerik.com/2017.2.504/styles/kendo.mobile.all.min.css"> <script src="http://kendo.cdn.telerik.com/2017.2.504/js/angular.min.js"></script> <script src="http://kendo.cdn.telerik.com/2017.2.504/js/jszip.min.js"></script> </head> <body> <div id="example"> <button onclick="StartProcess()">Start Process</button> </div> <style> #example { width: 300px; height: 300px; background: #f00; } </style> <script> function StartProcess() { kendo.ui.progress($(document.body), true); LongProcess(5000); kendo.ui.progress($(document.body), false); } function LongProcess(milliseconds) { var startTime = new Date().getTime(); var endTime = startTime + milliseconds; while (endTime > new Date().getTime()) {}; } </script> </body> </html>
发现根本不起作用,
检查后,我注意到这是一个时间问题。
加载指示器没有足够的时间来初始化。因为漫长的过程开始得太快并且浏览器没有响应。我可以假设这与实际应用程序中发生的情况相似。
请确保在显示加载指示器后稍微执行保存进度,以便有足够的时间正确渲染:
<!DOCTYPE html> <html> <head> <base href="http://demos.telerik.com/kendo-ui/diagram/index"> <style>html { font-size: 12px; font-family: Arial, Helvetica, sans-serif; }</style> <title></title> <link rel="stylesheet" href="http://kendo.cdn.telerik.com/2017.2.504/styles/kendo.common.min.css"> <link rel="stylesheet" href="http://cdn.kendostatic.com/2015.1.429/styles/kendo.uniform.min.css" /> <link rel="stylesheet" href="http://cdn.kendostatic.com/2015.1.429/styles/kendo.dataviz.min.css" /> <link rel="stylesheet" href="http://cdn.kendostatic.com/2015.1.429/styles/kendo.dataviz.uniform.min.css" /> <script src="http://code.jquery.com/jquery-1.12.3.min.js"></script> <script src="http://kendo.cdn.telerik.com/2017.2.504/js/kendo.all.min.js"></script> <link rel="stylesheet" href="http://kendo.cdn.telerik.com/2017.2.504/styles/kendo.rtl.min.css"> <link rel="stylesheet" href="http://kendo.cdn.telerik.com/2017.2.504/styles/kendo.default.min.css"> <link rel="stylesheet" href="http://kendo.cdn.telerik.com/2017.2.504/styles/kendo.mobile.all.min.css"> <script src="http://kendo.cdn.telerik.com/2017.2.504/js/angular.min.js"></script> <script src="http://kendo.cdn.telerik.com/2017.2.504/js/jszip.min.js"></script> </head> <body> <div id="example"> <button onclick="StartProcess()">Start Process</button> </div> <style> #example { width: 300px; height: 300px; background: #f00; } </style> <script> function StartProcess() { kendo.ui.progress($(document.body), true); setTimeout(function(){ LongProcess(5000); kendo.ui.progress($(document.body), false); },100)//做个很小的时间差 } function LongProcess(milliseconds) {//长操作,可能是查询数据库,也可能是页面元素变动,我使用的是grid.autoFitColumns(); 列比较多 var startTime = new Date().getTime(); var endTime = startTime + milliseconds; while (endTime > new Date().getTime()) {}; } </script> </body> </html>
来自:https://www.telerik.com/forums/kendo-ui-progress
分类:
Kendo
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统