window.open()代替window.showModalDialog()問題

      最近在做一個項目,需要用到彈出一個子窗口(sub.jsp)顯示一些信息,然後在sub.jsp中需要調用父窗口(main.jsp)裏的js方法,同時在打開了sub.jsp以後,整個瀏覽器窗口中最前面的頁面是sub.jsp。

 

      開始想到的方法是用showModalDialog()來打開一個新的窗口,這樣打開sub.jsp頁面時該頁面就在最前面,在我本機上通過IE(IE7.0)瀏覽器是能在sub.jsp裏調用main.jsp裏方法的。但是當我把程序部署到客戶服務器上,通過客戶瀏覽器打開sub.jsp頁面時可以讓其在最前面,但是點擊調用main.jsp中方法時會出錯(重新彈出一個窗口),而客戶的瀏覽器是IE6版本的。最後實在沒有辦法只能考慮用window.open()來實現該功能,這個時候就需要解決的問題是讓window.open()打開的頁面在最前面,上網查找了一些資料,提到的解決方法如下:

var newWin = window.open('sub.jsp','newWin','height=200,width=400,top=200,left=200,toolbar=no,menubar=no,scrollbars=no, resizable=no,location=no,status=no');

window.onfocus=function (){  
    if(newWin && !newWin.closed){
        newWin.focus();
    }
}; 

window.document.onfocus=function (){  
    if(newWin && !newWin.closed){
        newWin.focus();
    }
}; 

window.document.onclick=function (){  
    if(newWin && !newWin.closed){
        newWin.focus();
    }
}; 

window.document.ondblclick=function (){  
    if(newWin && !newWin.closed){
        newWin.focus();
    }
}; 

     

      通過測試,以上方法並不能真正解決讓sub.jsp保持在最前面。

      後來,想了個辦法,在sub.jsp頁面中,添加如下代碼: 

<body onblur="focus();">

      這樣可以讓window.open()打開的頁面保持在最前面。

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章