網(wǎng)(LieHuo.Net)教程 HTML頁面彈出自定義對(duì)話框并跳轉(zhuǎn)頁面的兩種方法(使用JavaScript)
方法一 系統(tǒng)API法:
調(diào)用window.showModalDialog打開以自定義頁面為內(nèi)容的對(duì)話框。根據(jù)其返回值,通過window.location.href跳轉(zhuǎn)指定頁面。window.showModalDialog的使用方法請(qǐng)參考http://msdn.microsoft.com/en-us/library/ms536759(VS.85).aspx
<!--需要彈出對(duì)話框的頁面-->
<script type="text/javascript">
function fnOpen()
{
var r = window.showModalDialog("http://dlg.aspx", "", "dialogWidth: 200px; dialogHeight: 200px; resizable: no; scroll: no;status: no;edge: sunken;unadorned: yes;");
switch(r)
{
case 1:
window.location.href="http://1.aspx"
break;
default:
break;
}
}
</script>
<!--img控件,點(diǎn)擊調(diào)用fnOpen-->
<div id="1" align="center" style="cursor:pointer">
<br><img src="1.png" alt="" style="width:123px;height:43px;" onclick="fnOpen()"/>
</div>
新建一個(gè)dlg.aspx,在里面隨意添加需要顯示的內(nèi)容,在退出時(shí)賦以返回值。
<!--dlg.aspx添加返回值以及關(guān)閉對(duì)話框-->
<input name="Btn" type="button" value="1" styleonclick="window.returnValue=1;window.close();"></td>
優(yōu)點(diǎn):方便快速,比較簡(jiǎn)單。
缺點(diǎn):在非IE下運(yùn)行可能會(huì)不正常。對(duì)話框的邊框去不掉。
拓展:還可以使用window.open,showmodelessDialog等方法,做法類似,效果各有不同。
方法二:遮罩法
通過遮罩,事先隱藏一個(gè)div,在需要的時(shí)候調(diào)出顯示既可。
<!--以下代碼從網(wǎng)上多處學(xué)習(xí)整合而成,由于來源不一,并經(jīng)過自行修改,請(qǐng)?jiān)徫醋髯⒚?->
<script type="text/javascript">
var docEle = function()
{
return document.getElementById(arguments[0]) || false;
}
function openNewDiv(_id)
{
var m = "mask";
if (docEle(_id)) document.body.removeChild(docEle(_id));
if (docEle(m)) document.body.removeChild(docEle(m));
//mask遮罩層
var newMask = document.createElement("div");
newMask.id = m;
newMask.style.position = "absolute";
newMask.style.zIndex = "1";
_scrollWidth = Math.max(document.body.scrollWidth,document.documentElement.scrollWidth);
_scrollHeight = Math.max(document.body.scrollHeight,document.documentElement.scrollHeight);
newMask.style.width = _scrollWidth + "px";
newMask.style.height = _scrollHeight + "px";
newMask.style.top = "0px";
newMask.style.left = "0px";
newMask.style.background = "#33393C";
newMask.style.filter = "alpha(opacity=40)";
newMask.style.opacity = "0.40";
document.body.appendChild(newMask);
//新彈出層
var newDiv = document.createElement("div");
newDiv.id = _id;
newDiv.style.position = "absolute";
newDiv.style.zIndex = "9999";
newDivWidth = 250;
newDivHeight = 200;
newDiv.style.width = newDivWidth + "px";
newDiv.style.height = newDivHeight + "px";
newDiv.style.top = (document.body.scrollTop + document.body.clientHeight/2 - newDivHeight/2) + "px";
newDiv.style.left = (document.body.scrollLeft + document.body.clientWidth/2 - newDivWidth/2) + "px";
newDiv.style.background = "#EFEFEF";
newDiv.style.border = "1px solid #860001";
newDiv.style.padding = "5px";
newDiv.innerHTML = document.getElementById("HideDlg").innerHTML;
newDiv.innerHTML+= " "
document.body.appendChild(newDiv);
//彈出層滾動(dòng)居中
function newDivCenter()
{
newDiv.style.top = (document.body.scrollTop + document.body.clientHeight/2 - newDivHeight/2) + "px";
newDiv.style.left = (document.body.scrollLeft + document.body.clientWidth/2 - newDivWidth/2) + "px";
}
if(document.all)
{
window.attachEvent("onscroll",newDivCenter);
}
else
{
window.addEventListener('scroll',newDivCenter,false);
}
//關(guān)閉新圖層和mask遮罩層
var newA = document.createElement("a");
newA.href = "#";
newA.innerHTML = "Cancel";
newA.onclick = function()
{
if(document.all)
{
window.detachEvent("onscroll",newDivCenter);
}
else
{
window.removeEventListener('scroll',newDivCenter,false);
}
document.body.removeChild(docEle(_id));
document.body.removeChild(docEle(m));
return false;
}
newDiv.appendChild(newA);
}
function closeDiv()
{
if(document.all)
{
window.detachEvent("onscroll",newDivCenter);
}
else
{
window.removeEventListener('scroll',newDivCenter,false);
}
document.body.removeChild(docEle(_id));
document.body.removeChild(docEle(m));
return false;
}
</script>
<!--img控件,點(diǎn)擊觸發(fā)-->
<div id="1" align="center" style="cursor:pointer">
<br>
<img src="1.png" alt="" style="width:123px;height:43px;" onclick="openNewDiv('newDiv');return false;"/>
</div>
<!--隱藏的div,隨意修改-->
<div id="HideDlg" style="display:none;">
<input name="Btn" type="button" value="1" onclick="window.location.href='http://www.jyygyx.com/'
</div>
優(yōu)點(diǎn):顯示效果好,無邊框,彈出后始終保持在屏幕中部,主頁面變灰。
缺點(diǎn):代碼復(fù)雜。
注意:如果是在motherpage中添加,觸發(fā)控件如果為<input img>的時(shí)候,可能會(huì)觸發(fā)頁面自刷屏導(dǎo)致頁面跳轉(zhuǎn)被自己覆蓋。