编程之家 jb51.cc HTML页面弹出自定义对话框并跳转页面的两种方法(使用JavaScript)
方法一 系统API法:
调用window.showModalDialog打开以自定义页面为内容的对话框。根据其返回值,通过window.location.href跳转指定页面。window.showModalDialog的使用方法请参考http://msdn.microsoft.com/en-us/library/ms536759(VS.85).aspx
<!--需要弹出对话框的页面-->
<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控件,点击调用fnopen-->
<div id=1 align=center style=cursor:pointer>
<br><img src=1.png alt= style=width:123px;height:43px; onclick=fnopen()/>
</div>
新建一个dlg.aspx,在里面随意添加需要显示的内容,在退出时赋以返回值。
<!--dlg.aspx添加返回值以及关闭对话框-->
<input name=Btn type=button value=1 styleonclick=window.returnValue=1;window.close();></td>
优点:方便快速,比较简单。
缺点:在非IE下运行可能会不正常。对话框的边框去不掉。
拓展:还可以使用window.open,showmodelessDialog等方法,做法类似,效果各有不同。
方法二:遮罩法
通过遮罩,事先隐藏一个div,在需要的时候调出显示既可。
<!--以下代码从网上多处学习整合而成,由于来源不一,并经过自行修改,请原谅未作注明-->
<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);
//弹出层滚动居中
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);
}
//关闭新图层和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',false);
}
document.body.removeChild(docEle(_id));
document.body.removeChild(docEle(m));
return false;
}
newDiv.appendChild(newA);
}
function closeDiv()
{
if(document.all)
{
window.detachEvent(onscroll,false);
}
document.body.removeChild(docEle(_id));
document.body.removeChild(docEle(m));
return false;
}
</script>
<!--img控件,点击触发-->
<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.wfuyu.com/'
</div>
优点:显示效果好,无边框,弹出后始终保持在屏幕中部,主页面变灰。
缺点:代码复杂。
注意:如果是在motherpage中添加,触发控件如果为<input img>的时候,可能会触发页面自刷屏导致页面跳转被自己覆盖。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。