[英]Progress indicator in dajax/dajaxice?
我成功地将dajax集成到了我的项目中。 很好,但是缺少一些可以使其变得更好的功能-例如。 显示正在处理请求的可见指示器(变暗的屏幕,沙漏等)。 我在dajaxice.js中找到了一些我应该拦截请求的地方,但这不是简单的方法。.您是否知道一些简单的方法,还是应该选择困难的方法-不使用任何ajax框架并手动完成所有工作?
这样的事情会起作用(在右上角提供gmail样式加载...消息):
function useLoadingMessage(message) {
var loadingMessage;
if (message) loadingMessage = message;
else loadingMessage = "Loading";
Dajaxice.preHook = function() {
var disabledZone = document.getElementById('disabledZone');
if (!disabledZone) {
disabledZone = document.createElement('div');
disabledZone.setAttribute('id', 'disabledZone');
disabledZone.style.position = "absolute";
disabledZone.style.zIndex = "1000";
disabledZone.style.left = "0px";
disabledZone.style.top = "0px";
disabledZone.style.width = "100%";
disabledZone.style.height = "100%";
document.body.appendChild(disabledZone);
var messageZone = document.createElement('div');
messageZone.setAttribute('id', 'messageZone');
messageZone.style.position = "absolute";
messageZone.style.top = "0px";
messageZone.style.right = "0px";
messageZone.style.background = "red";
messageZone.style.color = "white";
messageZone.style.fontFamily = "Arial,Helvetica,sans-serif";
messageZone.style.padding = "4px";
disabledZone.appendChild(messageZone);
var text = document.createTextNode(loadingMessage);
messageZone.appendChild(text);
}
else {
document.getElementById('messageZone').innerHTML = loadingMessage;
disabledZone.style.visibility = 'visible';
}
};
Dajaxice.postHook = function() {
document.getElementById('disabledZone').style.visibility = 'hidden';
};
}
从javascript document.ready脚本或body标记中的onload调用useLoadingMessage()
以确保不可知论。
dajaxice.core.js中的一些技巧 :
49行起:
oXMLHttpRequest.onreadystatechange = function() {
if (this.readyState == XMLHttpRequest.DONE) {
if(Dajaxice.postHook) Dajaxice.postHook();
if(this.responseText == Dajaxice.EXCEPTION || !(this.status in Dajaxice.valid_http_responses())){
error_callback();
第65行起:
}
if(Dajaxice.preHook) Dajaxice.preHook();
if(method == 'POST'){
oXMLHttpRequest.send(send_data);
}
else{
javascript是与库无关的,并且只应在Dajaxice源代码中添加2行。 如果您希望使用其他加载元素,只需在html中disableZone
一个disableZone
id
, disableZone
为其CSS设置visible = hidden
。
我从dwr获得了这个解决方案, dwr是Java的dajaxice。 但是它确实还有其他一些很酷的功能,例如一些不错的调试页面和直接的图像上传功能,在dajaxice中非常方便。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.