我会这样做 - 基本上将所有引用的打开的窗口存储在函数本身上.当函数触发时,检查窗口是否不存在或已关闭 - 因此,启动弹出窗口.否则,请关注该请求的现有弹出窗口.
function launchApplication(l_url, l_windowName) { if ( typeof launchApplication.winRefs == 'undefined' ) { launchApplication.winRefs = {}; } if ( typeof launchApplication.winRefs[l_windowName] == 'undefined' || launchApplication.winRefs[l_windowName].closed ) { var l_width = screen.availWidth; var l_height = screen.availHeight; var l_params = 'status=1' + ',resizable=1' + ',scrollbars=1' + ',width=' + l_width + ',height=' + l_height + ',left=0' + ',top=0'; launchApplication.winRefs[l_windowName] = window.open(l_url, l_windowName, l_params); launchApplication.winRefs[l_windowName].moveTo(0,0); launchApplication.winRefs[l_windowName].resizeTo(l_width, l_height); } else { launchApplication.winRefs[l_windowName].focus() } }
您需要执行2次测试... 1检查是否定义了弹出窗口,2检查是否已关闭.
if(typeof(winRef) == 'undefined' || winRef.closed){ //create new winRef = window.open(....); } else { //it exists, load new content (if necs.) winRef.location.href = 'your new url'; //give it focus (in case it got burried) winRef.focus(); }
您可以在打开新窗口的页面中使用类似的内容:
var newWindow = null; function launchApplication() { // open the new window only if newWindow is null (not opened yet) // or if it was closed if ((newWindow == null) || (newWindow.closed)) newWindow = window.open(...); }