zoukankan      html  css  js  c++  java
  • kendo.ui.progress实现遮罩

    为了带来更好的用户体验,需要实现当请求一个长操作时,加载遮罩层,缓解等待焦虑感

    于是先到这样的代码:

    <!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 {
         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 {
         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

  • 相关阅读:
    java TopK算法
    夫妻过河问题
    Java中数据存储分配
    STM32与ARM代码执行过程
    C中gets()函数与scanf()函数说明
    MRTG开源监控安装手册
    mysql笔记
    windows调用ubuntu下的sublimeText2环境搭建
    linux性能优化
    测试那些事儿—软测必备的Linux知识(一)
  • 原文地址:https://www.cnblogs.com/djd66/p/15813825.html
Copyright © 2011-2022 走看看