眾所周知,FireFox為了支援web標準,在1.1版以後就取消了對強制回應對話方塊的支援。即:window.showModalDialog()。但是我們有時在製作網頁的時候想增強使用者體驗性,想使用這個功能怎麼辦?我們先來分析一下實現強制回應對話方塊的原理,我們在IE的強制回應對話方塊下無論點父視窗的什麼地方,focus(焦點)總是回到了子視窗上面。那麼在FireFox下我們將focus總是設定在子視窗上不就行了嘛。怎麼設定呢?javascript 有一個定時執行函數的操作似乎可以不斷地將子視窗設定為focus(我也沒有去測試是否可以,就不能說一定可以了),但是我們沒有必要這麼麻煩,因為只需當使用者點擊父視窗的時候設定一下就行了,很幸運,FireFox支援window.onclick事件。那麼我們一起來動手寫一個既支援IE又支援 FireFox的“強制回應對話方塊”函數:
<script type="text/javascript" >
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;
var DialogWin = window.open(url, 'write',"top="+win+",left="+winleft+',width=500px,height=300px,modal=yes');
window.onclick=function (){DialogWin.focus()};
}
}
</script>