HTML页面弹出自定义对话框并跳转页…

方法一 系统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.getElementByIdx_x(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_x( " 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_x( " 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.getElementByIdx_x( " HideDlg " ).innerHTML;
     newDiv.innerHTML
+= " &nbsp "
     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_x( " 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控件,点击触发 -->
< 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://1.aspx'    
</div>
优点:显示效果好,无边框,弹出后始终保持在屏幕中部,主页面变灰。
缺点:代码复杂。
注意:如果是在motherpage中添加,触发控件如果为<input img>的时候,可能会触发页面自刷屏导致页面跳转被自己覆盖
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值