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

  • 相关阅读:
    nRF5 SDK for Mesh(二) Getting started 快速开始
    QT 简单 TCP 通信,发送数据到服务器
    Bluetooth® Low Energy Beacons
    CC2540 低功耗串口, POWER_SAVING 模式 下 串口 0 的使用
    LWIP network interface 网卡 初始化 以 STM32 为例子 后面会有 用 2G 或者4G 模块 用 PPP拨号的 形式 虚拟出网卡 所以先以 这个为 前提
    R 语言入门
    Django 框架
    Windows 下 Django 安装
    windows 下搭建 git 服务器 copssh+git
    python Pystaller 将python文件打包成exe
  • 原文地址:https://www.cnblogs.com/djd66/p/15813825.html
Copyright © 2011-2022 走看看