阻止元素进行UI交互
Blocking the element for UI interaction
我想在进行服务器端调用时阻塞UI交互的div,并在程序流返回到客户端时解除阻塞。
如果我不包含unblock语句,它从服务器端进程返回后会进入阻塞状态。似乎一旦点击功能结束,UI阻塞就会激活。因此,当我在同一个函数中同时发出block和unblock语句时,它会忽略阻塞。如果是这样的话?那么我怎样才能得到我想要的结果呢?(例如,在调用某个进程之前阻塞屏幕/元素,并在流返回时解除阻塞)
下面是我的示例代码:$("#button").click(function () {
//$("#sidebar").block({
// message: '<h1>1Processing</h1>',
// css: { border: '3px solid #a00' }
//});
$.blockUI({
message: '<h1>2Processing</h1>',
css: { border: '3px solid #a00' }
});
var result = DoSomeServerSideProcessing();
//$("#sidebar").unblock();
$.unblockUI();
});
附加信息:
DoSomeServerSideProcessing() uses XmlHttpRequest()
访问服务器端。我不希望更改为jQuery ajax调用,因为它是经过测试和成熟的代码块,并且正在从代码的各个点被重用。
示例代码:
function DoSomeServerSideProcessing()
{
var dllUrl=" ... "
var result = httpGet(dllUrl);
}
function httpGet(theUrl) {
var xmlHttp = null;
xmlHttp = new XMLHttpRequest();
xmlHttp.open('GET', theUrl, false);
xmlHttp.setRequestHeader('Content-Type', 'text/xml');
xmlHttp.send(null);
var strHtml = xmlHttp.responseText;
xmlHttp = null;
return strHtml;
}
更新:
我尝试转换XmlHttpRequest()到$.ajax()。但它并没有阻塞UI。下列代码:
//$.blockUI();
//alert("before ajax call")
$.ajax({
url: theUrl,
type: "GET",
dataType: "text",
async: false,
beforeSend: function () {
$.blockUI();
},
complete: function () {
$.unblockUI();
},
success: function (result) {
strHtml = result;
//$.unblockUI();
}
});
//alert("after ajax call")
假设
DoSomeServerSideProcessing()
是一个带有回调的AJAX调用,.blockUI和.unblockUI函数已经在其他地方定义了,我将这样做:
function DoSomeServerSideProcessing(url,callback){
$.post(url,function(data){
$.unblockUI();
callback(data);
})
}
$("#button").click(function () {
$.blockUI({
message: '<h1>2Processing</h1>',
css: { border: '3px solid #a00' }
});
var result = DoSomeServerSideProcessing(url,function(data){
});
});
因为您希望在数据返回后调用UnblockUI函数
你需要把unBlock方法放在DoSomeServerSideProcessing
ajax调用的成功回调中。
AJAX是异步的,所以当它与服务器交换数据时,其余的代码将运行
相关文章:
- 有没有任何方法可以将控制器从文件加载到ui路由器$stateProvider中
- jQuery UI自动完成突然停止工作
- 如何使用skip参数使用angular ui引导进行服务器端分页
- AngularJS UI路由器不能像ng路由器那样工作
- 我可以更改剑道UI网格吗's的外键值
- 剑道UI内联编辑:如何在点击其他按钮时隐藏按钮
- 在Windows 10中自动执行例行程序(主要与浏览器交互)
- Rails/JSON:如何将JSON用于jquery UI自动完成表单
- 如何在jsp页面中包含一个拖放交互UI
- UI交互中何时需要机器人程序保护
- jQuery UI可拖动和可丢弃交互
- 将所有jquery ui交互状态应用于所有jquery ui小部件内容
- JavaScript中不干扰UI交互的后台任务
- 阻止元素进行UI交互
- jQuery ui地图交互从infoWindow/marker
- 在ui-grid编辑事件上与gridData交互
- 检测与Mobile Safari内浏览器UI的交互
- jQuery ui's的调整大小功能无法与chrome中的flexbox模型正确交互,但在FF和IE中取得了成功
- jQuery UI 可排序和可拖动列表交互不太正确
- 我如何编写一个函数,只有当用户与UI中的下拉菜单交互时才会执行,而不是从后端更新模型