ventana transparente pestaƱa open nueva modal emergente ejemplo centrada abrir _blank javascript popup window

transparente - JavaScript window.open solo si la ventana ya no existe



window.open javascript nueva ventana (6)

Código de trabajo

var newwindow = null; function popitup(url) { if ((newwindow == null) || (newwindow.closed)) { newwindow=window.open(url,''Buy'',''width=950,height=650,scrollbars=yes,resizable=yes''); newwindow.focus(); } else { newwindow.location.href = url; newwindow.focus(); } }

Tengo una aplicación que abre una nueva ventana al hacer clic en un enlace. Esto genera una página que contiene un applet de Java. El problema que estoy teniendo es que al hacer clic en el mismo enlace se vuelve a cargar la página, lo que restablece la aplicación Java. ¿Hay alguna forma de atrapar esto? Dos soluciones que serían aceptables son:

  1. Permitir que se abran varias ventanas desde el controlador de clics
  2. Ignorar las solicitudes posteriores si la ventana ya está abierta

Disculpas por ser un novato de Javascript, no es realmente lo principal.

El código adjunto al controlador es

function launchApplication(l_url, l_windowName) { 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''; winRef = window.open(l_url, l_windowName, l_params); winRef.moveTo(0,0); winRef.resizeTo(l_width, l_height); }

EDITAR:

Gracias por las respuestas: modifiqué las sugerencias ligeramente para poder tener más de una URL abierta a través de la función.

EDIT2: hay otra versión de este código en Comprobar que una URL esté abierta en otra ventana

var g_urlarray = []; Array.prototype.has = function(value) { var i; for (var i in this) { if (i === value) { return true; } } return false; }; function launchApplication(l_url, l_windowName) { var l_width = screen.availWidth; var l_height = screen.availHeight; var winRef; var l_params = ''status=1'' + '',resizable=1'' + '',scrollbars=1'' + '',width='' + l_width + '',height='' + l_height + '',left=0'' + '',top=0''; if (g_urlarray.has(l_url)) { winRef = g_urlarray[l_url]; } alert(winRef); if (winRef == null || winRef.closed) { winRef = window.open(l_url, l_windowName, l_params); winRef.moveTo(0,0); winRef.resizeTo(l_width, l_height); g_urlarray[l_url] = winRef; } }


Intente verificar:

if (! winref || winref.closed ||! winref.document) {}


Lo haría así: básicamente almacena todas las ventanas abiertas referenciadas en la función en sí. Cuando la función se activa, verifique si la ventana no existe o ha estado cerca, de modo que inicie la ventana emergente. De lo contrario, concéntrese en la ventana emergente existente para esa solicitud.

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() } }


Necesita realizar 2 pruebas ... 1 compruebe si la ventana emergente está definida, y 2 compruebe si se cerró.

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(); }


Puede usar algo como esto en la página que abre la nueva ventana:

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(...); }


Usted podría verificar de esta manera:

if(!winref || winref.closed) { }