等待控件在网上搜有好多种,但是都很复杂,不一定用的顺手,再说我的项目是bootstrap的原因,又不敢轻易使用第三方控件,怕不兼容,于是自己动手写了个等待控件,其技术点包括动态加载CSS,javascript的命名空间,所以记录一下。
这个等待控件主要是:进行某个操作前,显示一个信息提示:“数据加载中,请稍候。。。”,操作成功后,在回调函数中将提示消失,原理是这个等待控件完全由JS动态加进去,包括CSS,页面中并无预先设定。
那么这个CSS怎么动态加载呢?等待控件中,样式使用了class,如果我们将这些class预先写在样式文件中,那么调用页面除了要引用相关JS文件,还要引用CSS文件;就算在js文件中动态加载此css文件,但想想看,一个如此简单的控件就包含了2个文件,小题大做了点。
我是在JS中动态拼凑、加载CSS。
代码如下:
获取超时或失败!");
removeloading();
});
} else {//非首次加载,隐藏但不清空
docallback(tabJson.callback);
}
}
function getViewRequest(url,params,onsuccess,onerror) {
$.ajax({
type: 'get',url: url,data: params,contentType: "text/html; charset=utf-",timeout:,success: function (data) {
if (onsuccess != undefined && onsuccess != null) {
onsuccess(data);
}
},error: function (data) {
if (onerror != undefined && onerror != null) {
onerror(data);
}
}
});
}
function docallback(callback) {
if (typeof callback != 'undefined' && callback instanceof Function) {
callback();
}
}
function resetTab() {//刷新当前页签
loadwaiting();
var div = $(tabKeeper.container);
getViewRequest(tabKeeper.url,tabKeeper.params,function (data) {
div.empty().html(data);
div.css("display","");
docallback(tabKeeper.callback);
removeloading();
});
}
function loadwaiting() {//显示等待信息
$("
").css({ display: "block",width: wrap.width(),height: wrap.height() }).appendTo(wrap);
$("
").html("数据加载中,请稍候...").appendTo(wrap).css({ display: "block",left: (wrap.width() - $("div.datagrid-mask-msg",wrap).outerWidth()) /,top: ($(window).height() - $("div.datagrid-mask-msg",wrap).outerHeight()) / });
}
function removeloading() {//隐藏等待信息
wrap.find("div.datagrid-mask-msg").remove();
wrap.find("div.datagrid-mask").remove();
}
function initloading() {//设置等待控件样式
var css = ".datagrid-mask { ";
css += " position: absolute; ";
css += " left: ; ";
css += " top: ; ";
css += " width: %; ";
css += " height: %; ";
css += " opacity: .; ";
css += " filter: alpha(opacity=); ";
css += " display: none; ";
css += "} ";
css += ".datagrid-mask-msg { ";
css += " position: absolute; ";
css += " top: %; ";
css += " margin-top: -px; ";
css += " padding: px px px px;";
css += " width: auto; ";
css += " height: px; ";
css += " border-width: px; ";
css += " border-style: solid; ";
css += " display: none; ";
css += "}";
//动态加载CSS
if (document.all) {
window.style = css;
document.createStyleSheet("javascript:style");
} else {
var style = document.createElement('style');
style.type = 'text/css';
style.innerHTML = css;
document.getElementsByTagName('HEAD').item().appendChild(style);
}
}
initloading();
return {//这里是供外部调用的方法
onTab: function (tabJson) {
onTab(tabJson);
},resetTab: function () {
resetTab();
},init: function (tabJson) {
initTab(tabJson);
}
};
}();
外部如何调用呢?就这样:
以上所述就是关于javascript前端等待控件的实现过程,希望本文所述对大家有所帮助。