javascript div 遮罩層封鎖整個(gè)頁(yè)面
更新時(shí)間:2009年07月10日 22:08:50 作者:
在客戶(hù)端瀏覽器中,可以在某個(gè)時(shí)機(jī)使用javascript把一個(gè)div作為遮罩層,來(lái)封鎖整個(gè)頁(yè)面。
具體解決方案如下:
一、IE和FF下document.body對(duì)象的clientHeight,offsetHeight,scrollHeight屬性的差別。
clientHeight
在IE和FF下,該屬性沒(méi)什么差別,都是指瀏覽器的可視區(qū)域,即除去瀏覽器的那些工具欄狀態(tài)欄剩下的頁(yè)面展示空間的高度。
offsetHeight
在IE下,offsetHeight也是瀏覽器可視區(qū)域的高(包括邊線(xiàn))
在FF下,offsetHeight是頁(yè)面具體內(nèi)容的高度
scrollHeight
在IE下,scrollHeight 是頁(yè)面具體內(nèi)容的高度,可以小于clientHeight
在FF下,scrollHeight 是網(wǎng)頁(yè)內(nèi)容高度,不過(guò)最小值是clientHeight
二、下面是跨瀏覽器取得當(dāng)前頁(yè)面的高度的解決方法。
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;
}
三、頁(yè)面上必須放置一個(gè)div,作為遮罩層,下面是這個(gè)遮罩層的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);
}
四、在客戶(hù)端使用下面的javascript用遮罩層將整個(gè)頁(yè)面封閉。
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);
}
}
五、如果頁(yè)面上使用了ASP.net的Validator控件,那么應(yīng)該使用如下的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這兩個(gè)方法可以在按鈕的onclick事件或其它時(shí)機(jī)調(diào)用。
一、IE和FF下document.body對(duì)象的clientHeight,offsetHeight,scrollHeight屬性的差別。
clientHeight
在IE和FF下,該屬性沒(méi)什么差別,都是指瀏覽器的可視區(qū)域,即除去瀏覽器的那些工具欄狀態(tài)欄剩下的頁(yè)面展示空間的高度。
offsetHeight
在IE下,offsetHeight也是瀏覽器可視區(qū)域的高(包括邊線(xiàn))
在FF下,offsetHeight是頁(yè)面具體內(nèi)容的高度
scrollHeight
在IE下,scrollHeight 是頁(yè)面具體內(nèi)容的高度,可以小于clientHeight
在FF下,scrollHeight 是網(wǎng)頁(yè)內(nèi)容高度,不過(guò)最小值是clientHeight
二、下面是跨瀏覽器取得當(dāng)前頁(yè)面的高度的解決方法。
復(fù)制代碼 代碼如下:
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;
}
三、頁(yè)面上必須放置一個(gè)div,作為遮罩層,下面是這個(gè)遮罩層的css樣式。
復(fù)制代碼 代碼如下:
.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);
}
四、在客戶(hù)端使用下面的javascript用遮罩層將整個(gè)頁(yè)面封閉。
復(fù)制代碼 代碼如下:
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);
}
}
五、如果頁(yè)面上使用了ASP.net的Validator控件,那么應(yīng)該使用如下的javascript。
復(fù)制代碼 代碼如下:
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這兩個(gè)方法可以在按鈕的onclick事件或其它時(shí)機(jī)調(diào)用。
您可能感興趣的文章:
- html 鎖定頁(yè)面(js遮罩層彈出div效果)
- JS遮罩層效果 兼容ie firefox jQuery遮罩層
- JS+CSS實(shí)現(xiàn)彈出全屏灰黑色透明遮罩效果的方法
- js彈出div并顯示遮罩層
- js點(diǎn)擊按鈕實(shí)現(xiàn)帶遮罩層的彈出視頻效果
- js+css 實(shí)現(xiàn)遮罩居中彈出層(隨瀏覽器窗口滾動(dòng)條滾動(dòng))
- 利用js實(shí)現(xiàn)遮罩以及彈出可移動(dòng)登錄窗口
- Js制作簡(jiǎn)單彈出層DIV在頁(yè)面居中 中間顯示遮罩的具體方法
- 原生js實(shí)現(xiàn)半透明遮罩層效果具體代碼
- js實(shí)現(xiàn)鼠標(biāo)移動(dòng)到圖片產(chǎn)生遮罩效果
相關(guān)文章
JavaScript設(shè)計(jì)模式之迭代者模式詳情
這篇文章主要介紹了JavaScript設(shè)計(jì)模式之迭代者模式詳情,迭代器設(shè)計(jì)模式能夠可以讓我們更方便的且有規(guī)矩的進(jìn)行訪(fǎng)問(wèn)復(fù)合數(shù)據(jù)的每一項(xiàng),也可以通過(guò)迭代器進(jìn)行完成一些流線(xiàn)式操作2022-06-06jquery單行文字向上滾動(dòng)效果的實(shí)現(xiàn)代碼
這篇文章主要介紹了jquery單行文字向上滾動(dòng)效果的具體實(shí)現(xiàn),此效果適應(yīng)于很多場(chǎng)景,會(huì)的不會(huì)的都要學(xué)習(xí)下啊2014-09-09JS中art-template模板使用過(guò)濾器問(wèn)題
這篇文章主要介紹了JS中art-template模板使用過(guò)濾器問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09JavaScript引用類(lèi)型Date常見(jiàn)用法實(shí)例分析
這篇文章主要介紹了JavaScript引用類(lèi)型Date常見(jiàn)用法,結(jié)合實(shí)例形式分析了引用類(lèi)型Date基本創(chuàng)建、參數(shù)使用及相關(guān)注意事項(xiàng),需要的朋友可以參考下2018-08-08javascript實(shí)現(xiàn)仿騰訊游戲選擇
這篇文章主要介紹了javascript實(shí)現(xiàn)仿騰訊游戲選擇,簡(jiǎn)單實(shí)現(xiàn)的下拉菜單二級(jí)聯(lián)動(dòng)效果,十分不錯(cuò),有需要的小伙伴可以參考下。2015-05-05前端插件之Bootstrap Dual Listbox使用教程
這篇文章主要介紹了前端插件之Bootstrap Dual Listbox使用教程,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2019-07-07bootstrap監(jiān)聽(tīng)滾動(dòng)實(shí)現(xiàn)頭部跟隨滾動(dòng)
這篇文章主要為大家詳細(xì)介紹了bootstrap監(jiān)聽(tīng)滾動(dòng)實(shí)現(xiàn)頭部跟隨滾動(dòng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-11-11