我正在使用 dojo.xhrpost 进行 ajax 提交。
需要很长时间才能得到响应。
所以我想显示一个页面加载 gif 直到我得到响应。
同时,我有点想隐藏或降低页面的可见性,以便用户在收到响应之前无法单击页面上的任何内容。
我想将页面加载 gif 覆盖在整个网页上,直到收到响应。
4 回答
use a div with below css. All you need to do is show/hid this div
.overlay {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 100000;
opacity: 0.6;
background: black url(http://1.bp.blogspot.com/_xn2gmPb9TfM/SBZwjqwS6MI/AAAAAAAABZw/uMVQlcxlosA/s400/loading-icon.gif) no-repeat center center;
}
Add a DIV with a specific name (lets say 'loading') that is 100% in width and height and has a (semi) transparent background (image). Add an inner DIV (lets say 'loadingInner') that holds the loading gif. Set the loading DIVs to display: none by default.
Then, when you access external information, show the loading DIVs with jQuery:
function showLoading() {
var loadControl = $("#loading");
if (loadControl) {
$("#loadingInner").show();
$("#loading").show();
}
}
Hope this helps
希望这也有助于加载图像在 ajax 调用挂起状态期间出现在整个窗口中: http ://www.edwardawebb.com/web-development/cakephp/disable-page-show-translucent-progress-bar
当您显示加载 gif 时,将其包装在一个 div 中,该 div 以一些低不透明度覆盖页面。
在您的 dom 中,您可以粘贴类似的东西
<div id="overlay"><img src="loading.gif"></div>
风格像
position: fixed;
top: 0px;
left: 0px;
height: 100%;
width: 100%;
background-color: white;
opacity: 0.3;
display:none;
z-index: 100; /* should be large enough to be on top of everything */
然后在 ajax 调用之前,显示 div
dojo.query("#overlay").style("display", "block");
然后当加载成功时,你隐藏它
var deferred = dojo.xhrPost({ ...,
load: function() {
dojo.query("#overlay").style("display","none");
}
});
我没有在 Dojo 上做太多的工作,但它似乎应该可以工作。如果没有,我敢打赌它真的很接近。
只要您在#overlay div 上没有事件绑定,用户应该无法与页面交互,直到 div 被隐藏。
您可能还想隐藏错误覆盖(检查错误回调),以便如果您的请求失败,至少用户仍然可以访问页面上的内容。