网页下载文件期间如何防止用户对网页进行其他操作
做网页下载文件时,有时候文件过大,生成文件需要一段时间。这个时候要防止用户对网页进行其他操作,有种方法就是使用一个div覆盖在网页上,将网页锁住。
functionlockScreen()
{
sWidth=$(window).width();
sHeight=$(window).height();
varbgObj=document.createElement("div");
bgObj.setAttribute('id','bgDiv');
bgObj.style.position="absolute";
bgObj.style.top="0";
bgObj.style.background="#CCCCCC";
bgObj.style.filter="progid:DXImageTransform.Microsoft.Alpha(style=3,opacity=25,finishOpacity=75";
bgObj.style.opacity="0.6";
bgObj.style.left="0";
bgObj.style.width=sWidth+"px";
bgObj.style.height=sHeight+"px";
if(sWidth<860)
{
bgObj.style.width="860px";
}
bgObj.style.zIndex="10000";
document.body.appendChild(bgObj);
}
使用如上函数可以锁住页面防止多次操作,要直到下载框出现时取消锁屏。
在服务器端(cgi)中设置cookie:
<prename="code"class="cpp">char*configDownloadToken="finishedDownloadFile";
printf("Content-Type:application/octet-stream\nContent-Length:%ld\n",s.st_size);
printf("Set-Cookie:configDownloadToken=%s;path=/;\r\n",configDownloadToken);
printf("Content-Disposition:attachment;filename=\"%s\"\n",strrchr(filename,'/')+1);
printf("Connection:close\n\n");
在客户端(html、js)导入插件jquery.cookie.js,在html文件中要包含此插件,js文件中定时获取cookie
varconfigDownloadCheckTimer;
$(document).ready(function(){
configDownloadCheckTimer=window.setInterval(function(){
varcookieValue=$.cookie('configDownloadToken');
if(cookieValue==="finishedDownloadFile")
{
refreshPage();
finishDownload();
}
},1000);
});
functionfinishDownload(){
window.clearInterval(configDownloadCheckTimer);
$.removeCookie('configDownloadToken');//clearsthiscookievalue
}
这样就可以了。