当前位置: 首页 > 图文教程 > 网络编程 > Javascript > javascript div 遮罩层封锁整个页面

Javascript
网页中的图片的处理方法与代码
用javascript实现jquery的document.ready功能的实现代码
Exitjs获取DataView中图片文件名
javascript 加入收藏、设为首页(IE,firefox兼容脚本之家版)
isArray()函数(JavaScript中对象类型判断的几种方法)
Javascript 二维数组
js setattribute批量设置css样式
Javascript 复制数组实现代码
extJs 文本框后面加上说明文字+下拉列表选中值后触发事件
JavaScript 闭包在封装函数时的简单分析
javascript showModalDialog 多层模态窗口实现页面提交及刷新的代码
JavaScript 字符串操作的几种常见方法
javascript &&和||运算法的另类使用技巧
[原创]javascript代码在ie8里报错 document.getElementById(...) 为空或不是对象的解决方法
js鼠标移动在title中显示图片的效果代码
JavaScript Alert通用美化类
javascript 新闻列表排序简单封装
Javascript 构造函数,公有,私有特权和静态成员定义方法
javascript 设置某DIV区域内的checkbox复选框
document.body.scrollTop 值总为0的解决方法 比较常见的标准问题

Javascript 中的 javascript div 遮罩层封锁整个页面


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-12   浏览: 346 ::
收藏到网摘: n/a

在客户端浏览器中,可以在某个时机使用javascript把一个div作为遮罩层,来封锁整个页面。 具体解决方案如下:
一、IE和FF下document.body对象的clientHeight,offsetHeight,scrollHeight属性的差别。
clientHeight
在IE和FF下,该属性没什么差别,都是指浏览器的可视区域,即除去浏览器的那些工具栏状态栏剩下的页面展示空间的高度。
offsetHeight
在IE下,offsetHeight也是浏览器可视区域的高(包括边线)
在FF下,offsetHeight是页面具体内容的高度
scrollHeight
在IE下,scrollHeight 是页面具体内容的高度,可以小于clientHeight
在FF下,scrollHeight 是网页内容高度,不过最小值是clientHeight
二、下面是跨浏览器取得当前页面的高度的解决方法。
复制代码 代码如下:

function getPageSize()
{
var body = document.documentElement;
var bodyOffsetWidth = 0;
var bodyOffsetHeight = 0;
var bodyScrollWidth = 0;
var bodyScrollHeight = 0;
var pageDimensions = [0,0];
pageDimensions[0]=body.clientHeight;
pageDimensions[1]=body.clientWidth;
bodyOffsetWidth=body.offsetWidth;
bodyOffsetHeight=body.offsetHeight;
bodyScrollWidth=body.scrollWidth;
bodyScrollHeight=body.scrollHeight;
if(bodyOffsetHeight > pageDimensions[0])
{
pageDimensions[0]=bodyOffsetHeight;
}
if(bodyOffsetWidth > pageDimensions[1])
{
pageDimensions[1]=bodyOffsetWidth;
}
if(bodyScrollHeight > pageDimensions[0])
{
pageDimensions[0]=bodyScrollHeight;
}
if(bodyScrollWidth > pageDimensions[1])
{
pageDimensions[1]=bodyScrollWidth;
}
return pageDimensions;
}

三、页面上必须放置一个div,作为遮罩层,下面是这个遮罩层的css样式。
复制代码 代码如下:

.lockDiv
{
position:absolute;
left:0;
top:0;
height:0;
width:0;
border:2 solid red;
display:none;
text-align:center;
background-color:#DBDBDB;
filter:Alpha(opacity=60);
}

四、在客户端使用下面的javascript用遮罩层将整个页面封闭。
复制代码 代码如下:

var sandglassSpan = 1;
var timeHdl;
function DisablePage()
{
var ctrlSandglass = document.getElementById("divSandglass");
if(sandglassSpan==0)
{
window.clearTimeout(timeHdl);
ctrlSandglass.style.display = "none";
document.body.style.cursor = 'auto';
sandglassSpan = 1;
}
else
{
document.body.style.cursor = 'wait';
var pageDimensions = getPageSize();
ctrlSandglass.style.top = 0;
ctrlSandglass.style.left = 0;
ctrlSandglass.style.height = pageDimensions[0];
ctrlSandglass.style.width = pageDimensions[1];
ctrlSandglass.style.display = "block";
timeHdl = window.setTimeout(DisablePage,200);
}
}

五、如果页面上使用了ASP.net的Validator控件,那么应该使用如下的javascript。
复制代码 代码如下:

var sandglassSpan = 1;
var timeHdl;
function DisablePageHaveValidator()
{
var ctrlSandglass = document.getElementById("divSandglass");
if(false == Page_IsValid)
{
sandglassSpan = 0;
}
if(sandglassSpan==0)
{
window.clearTimeout(timeHdl);
ctrlSandglass.style.display = "none";
document.body.style.cursor = 'auto';
sandglassSpan = 1;
}
else
{
document.body.style.cursor = 'wait';
ctrlSandglass.style.display = "block";
var pageDimensions = getPageSize();
ctrlSandglass.style.top = 0;
ctrlSandglass.style.left = 0;
ctrlSandglass.style.height = pageDimensions[0];
ctrlSandglass.style.width = pageDimensions[1];
timeHdl = window.setTimeout(DisablePageHaveValidator, 200);
}
}

六、DisablePage和DisablePageHaveValidator这两个方法可以在按钮的onclick事件或其它时机调用。