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 sean aceptables son:JavaScript window.open only si la ventana ya no existe
- permitir que múltiples ventanas para abrirse desde el controlador de clic
- ignorar las solicitudes posteriores, si la ventana ya está abierta
Disculpas por ser un novato Javascript - es realmente no es 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);
}
EDIT:
Gracias por las respuestas - I modificado ligeramente las sugerencias para que yo pudiera tener más de una dirección URL abierta a través de la función.
Edit2: Hay otra versión de este código en Check for a URL open on another window
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;
}
}
sí, así es como lo haría: huella más baja, más reutilización, autónomo +1 – annakata
+1 funciona muy bien.Sin embargo, una cosa es que tienes 'winRefs' en el cheque original pero luego lo deletreas más tarde como' winrefs' – Rondel