javascript div 遮罩層封鎖整個頁面
2024-05-06 14:14:56
供稿:網(wǎng)友
 
具體解決方案如下: 
一、IE和FF下document.body對象的clientHeight,offsetHeight,scrollHeight屬性的差別。 
clientHeight 
在IE和FF下,該屬性沒什么差別,都是指瀏覽器的可視區(qū)域,即除去瀏覽器的那些工具欄狀態(tài)欄剩下的頁面展示空間的高度。 
offsetHeight 
在IE下,offsetHeight也是瀏覽器可視區(qū)域的高(包括邊線) 
在FF下,offsetHeight是頁面具體內(nèi)容的高度 
scrollHeight 
在IE下,scrollHeight 是頁面具體內(nèi)容的高度,可以小于clientHeight 
在FF下,scrollHeight 是網(wǎng)頁內(nèi)容高度,不過最小值是clientHeight 
二、下面是跨瀏覽器取得當(dāng)前頁面的高度的解決方法。 
 代碼如下:
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控件,那么應(yīng)該使用如下的javascript。 
 代碼如下:
var sandglassSpan = 1; 
var timeHdl; 
function DisablePageHaveValidator() 
{ 
var ctrlSandglass = document.getElementById("divSandglass"); 
if(false == Page_IsValid)