`
FengShen_Xia
  • 浏览: 273597 次
  • 性别: Icon_minigender_1
  • 来自: 东方水城
社区版块
存档分类
最新评论

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()打开的页面保持在最前面。

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics