<!-- Site.Master -->
<div id="loading" class="loadStyle">
<table style="width:100%; margin-top:300px">
<tr align="center" style="height:100px; width:100%">
<td style="width:40%"></td>
<td style="width:20%; background-color: White;">
<img src="<%= Url.Content("~/Content/Image/spinner.gif")%>" alt="Loading" id="Img2" />
<br />
<span style="font-size:medium; color:Black">Processing.....</span>
</td>
<td style="width:40%"></td>
</tr>
</table>
</div>
var ajaxObj = false;
var reStr = "";
function getOs() {
var OsObject = "";
if (navigator.userAgent.indexOf("MSIE") > 0) {
return "MSIE"; //IE浏览器
}
if (isFirefox = navigator.userAgent.indexOf("Firefox") > 0) {
return "Firefox"; //Firefox浏览器
}
if (isSafari = navigator.userAgent.indexOf("Safari") > 0) {
return "Safari"; //Safan浏览器
}
if (isCamino = navigator.userAgent.indexOf("Camino") > 0) {
return "Camino"; //Camino浏览器
}
if (isMozilla = navigator.userAgent.indexOf("Gecko/") > 0) {
return "Gecko"; //Gecko浏览器
}
}
function createAjaxObj() {
try{
xmlObj = new ActiveXObject("Microsoft.XMLHTTP");
}catch(e){
try{
xmlObj = new ActiveXObject("Msxml2.XMLHTTP");
}catch(E){
xmlObj = new XMLHttpRequest();
}
}
return xmlObj;
}
function ShowLoading() {
var windowHeight = document.all ? document.getElementsByTagName("html")[0].offsetHeight : window.innerHeight;
var height = document.body.offsetHeight > windowHeight ? document.body.offsetHeight : windowHeight;
$("#loading").height(height);
$("#loading").width(document.body.offsetWidth);
$("#loading").show();
}
function HideLoading() {
$("#loading").hide();
}
function getReturnData() {
if (ajaxObj.readyState == 4) {
if (ajaxObj.status == 200) {
reStr = ajaxObj.responseText;
}
}
}
function getAjaxResponse(url, postData) {
ShowLoading();
/*这里alert()放开,就能正常弹出覆盖层, 注释掉,就弹不出来(或者说是弹出和隐藏是同时发生的,所以看不到)*/
//alert("test");
var reData = "";
var osType = getOs();
ajaxObj = createAjaxObj();
if (ajaxObj) {
ajaxObj.open('POST', url, false);
ajaxObj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
ajaxObj.setRequestHeader("Cache-Control", "no-cache");
ajaxObj.onreadystatechange = osType == "Firefox" ? getReturnData() : getReturnData;
ajaxObj.send(postData);
ajaxObj.onreadystatechange = osType == "Firefox" ? getReturnData() : getReturnData;
}
HideLoading();
return reStr;
}测试环境IE8,很苦恼,有什么办法可以模拟alert()的阻断效果吗???????
window.setTimeout(function()
{
var reData = "";
var osType = getOs();
ajaxObj = createAjaxObj();
if (ajaxObj) {
ajaxObj.open('POST', url, false);
ajaxObj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
ajaxObj.setRequestHeader("Cache-Control", "no-cache");
ajaxObj.onreadystatechange = osType == "Firefox" ? getReturnData() : getReturnData;
ajaxObj.send(postData);
ajaxObj.onreadystatechange = osType == "Firefox" ? getReturnData() : getReturnData;
}},5000); HideLoading();
return reStr;
1. 不需要写适用各浏览器的代码
2. jquery的ajax里面,直接有一个属性支持在加载数据完毕前的事件定义:$.ajax({
url: GetUrl("Delete", "ArbitrageRule"),
data: { ruleId: id },
beforeSend: function () { CloseWindow(); ShowMessage("删除中"); },
success: function (x) {
if (x.rs) {
location.href = location.href.split("#")[0];
}
else {
CloseWindow();
Alert(x.msg);
}
}
});
JS也可以断点调试的,另外对于你现在自己建XmlHttpRequest对象的方式,
JQuery确实是比较好的选择。
function getReturnData() {
if(ajaxObj.readyState <4){
/*在这里弹出层。至于太快看不到效果的话你可以在你post的页面设置Tread.Sleep(3000)休眠几秒在
继续执行下去
*/
}
if (ajaxObj.readyState == 4) {
if (ajaxObj.status == 200) {
reStr = ajaxObj.responseText;
}
}
}
具体实行的话肯定不用加载这个,考虑到服务器处理过程的响应时间,带宽,等等,很少有机会操作一下就立即输出返回的。
也在项目里有用到,
只是某些特别的地方,
必须要用上面的方法.项目里这个地方的AJAX时间足够长,
所以需要弹出来屏蔽其他操作的,
现在不明白为啥加ALERT就可以弹出,
不加就不弹出,
哎,
目前没有人能答在重点上啊
至于加了alert就可以弹出,是因为弹出alert之后
只要你不按确定,整个javascript程序执行流程都将被挂起停止,直到按下alert的确定在继续执行。
上面说的sleep方法是不行的,那个是并行的