javascript – 在加载Jqgrid之前和加载网格之后我应该在哪里使用方法来阻止屏幕?

我在java脚本中编写了一个阻止屏幕并取消阻止屏幕的功能.阻止屏幕意味着它阻止屏幕,因此用户无法点击任何内容(屏幕上出现加载程序图标).

UIBlocker有两种方法.

1. UIBlocker.blockScreen()   // It blocks the screen.
2. UIBlocker.unblockScreen()  // It unblocks the screen.

现在,我需要在加载JQGrid时阻止屏幕.我想问一下我应该在哪里使用UIBlocker.blockScreen()和UIBlocker.unblockScreen().

根据我的发现,UIBlocker.blockScreen应该在beforeRequest事件中使用,因为它在请求数据之前触发.但是还有一些其他事件在加载之前就像beforeProcessing,loadBeforeSend一样触发.所以我仍然对此感到困惑.

第二件事是我应该在哪里使用unblockScreen.在loadComplete中还是在gridComplete中?

在这里,我找到了jqgrid的执行顺序,

beforeRequest
loadBeforeSend
serializeGridData
loadError (if a error from the request occur - the event from steps 5 till 7 do not execute. If there is no error the event 4. does not execute and we continue to with the step 5.)
beforeProcessing
gridComplete
loadComplete

现在建议我,我应该在哪里使用BlockScreen和unblockScreen?

最佳答案
您可以考虑首先使用loadui:“block”选项.这是在从服务器加载数据期间阻止网格的标准方法.它不会阻止整个屏幕(Web浏览器).

如果上述方法不是您所需要的,那么您可以实现替代阻止.解决方案将取决于jqGrid的版本以及您使用的jqGrid的分支(free jqGrid,商业Guriddo jqGrid JS或版本中的旧jqGrid< = 4.7).您写道,您使用的是复古版本4.4.4.在没有这么多可能性的情况下,推荐的方法是使用以下选项/回调:

loadui: "disable",// remove the standard grid blocking
loadBeforeSend: function () {
    UIBlocker.blockScreen(); // block the grid/screen
    return true;    // allow request to the server
},beforeProcessing: function () {
    UIBlocker.unblockScreen(); // unblock the grid/screen
    return true;    // process the server response
},loadError: function (jqXHR,textStatus,errorThrown) {
    UIBlocker.unblockScreen(); // unblock the grid/screen

    // display the eror message in some way
    alert("HTTP status code: " + jqXHR.status + "\n" +
        "textStatus: " + textStatus + "\n" +
        "errorThrown: " + errorThrown);
}

我提醒你,版本4.4.4是3.5年前发布的复古版本.您应该考虑将其升级free jqGrid的当前版本(4.13.4).它是jqGrid的分支,我在制作主叉商用并将其重命名为Guriddo jqGrid JS后开发(见the old postthe price list).免费的jqGrid可以使用与您当前使用的旧版本4.4.4相同的许可协议免费使用.

如果你要使用新版本的jqGrid,那么推荐的方法是覆盖jqGrid使用的progressBar方法

$.jgrid.extend({
    progressBar: function (options) {
        if (options.method === "show") {
            //alert("start blocking");
            UIBlocker.blockScreen();
        } else {
            //alert("stop blocking");
            UIBlocker.unblockScreen();
        }
    }
});

相关文章

jQuery插件的种类 1、封装对象方法 这种插件是将对象方法封装起来,用于对通过选择器获取的jQuery对象进...
扩展jQuery插件和方法的作用是非常强大的,它可以节省大量开发时间。 入门 编写一个jQuery插件开始于给...
最近项目中需要实现3D图片层叠旋转木马切换的效果,于是用到了jquery.roundabout.js。 兼容性如图: ht...
一、什么是deferred对象? 开发网站的过程中,我们经常遇到某些耗时很长的javascript操作。其中,既有异...
AMD 模块 AMD(异步模块定义,Asynchronous Module Definition)格式总体的目标是为现在的开发者提供一...