web中的模式对话框

 

 
模式对话框在 IE 下可以使用 window.showModalDialog 的方法来解决。但是众所周知, FireFox 为了支持 web 标准,在 1.1 版以后就取消了对模式对话框的支持。即: window.showModalDialog()
我们先来分析一下实现模式对话框的原理,我们在 IE 的模式对话框下无论点父窗口的什么地方, focus (焦点)总是回到了子窗口上面。那么在 FireFox 下我们将 focus 总是设置在子窗口上不就行了嘛。怎么设置呢? javascript 有一个定时执行函数的操作似乎可以不断地将子窗口设置为 focus (我也没有去测试是否可以,就不能说一定可以了),但是我们没有必要这么麻烦,因为只需当用户点击父窗口的时候设置一下就行了,很幸运, FireFox 支持 window.onclick 事件。那么我们一起来动手写一个既支持 IE 又支持 FireFox 模式对话框 函数:
举例说明:
var  DialogWin = null ;
function  modalWin(url){
    
if  (window.showModalDialog){
       window.showModalDialog(url,
' write ' , " dialogWidth:500px;dialogHeight:300px " );
    } 
else  {  
       
var  w  =  window.screen.width;   
       
var  h  =  window.screen.height;   
       
var  winwidth  =   500 ;   
       
var  winheight  =   300 ;   
       
var  win  =  (h  -  winheight) / 2 ;   
       
var  winleft  =  (w -  winwidth) / 2 ;   
       window.myAction 
=   this
       DialogWin 
=  window.open(url,  ' write ' , " top= " + win + " ,left= " + winleft + ' ,width=500px,height=300px,modal=yes ' );
       window.onclick
= function  (){DialogWin.focus()}; 
    }
}
function  a(){
    alert(
" 不支持鼠标右键行为 " );
    window.onclick
= function  (){
        DialogWin.focus()
    }; 
    
return   false ;
}
document.oncontextmenu
= new  Function( " return a(); " );

window.onload
= function (){
    modalWin(
" window.php " );
}
// 在同目录中建立一个window.php文件即可看到效果
 
模式对话框的注意事项:
模式对话框在 firefox 下应用还不是很成熟,原因是 firefox 的鼠标右击事件通过 document.oncontextmenu 进行捕捉也不能完全实现 IE 下的效果。还有就是 frame 下和 iframe 下的模式对话框应用。还存在一定缺陷。以后进一步改进。
关于 IE Firefox 下判断鼠标单击事件的 demo
function  buttonEnv(event)
{
    alert(event.button)
}

 

 

< body  onmousedown ="buttonEnv(event);" >
IE left 1 right 2
< br />
FF left 0 right 2
< br />
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值