El objeto window
Por
Lola C�rdenas y Joaquin Gracia.
rinconprog.metropoli2000.com
Se trata del objeto m�s alto en la jerarqu�a del navegador (navigator es un objeto independiente de todos en la jerarqu�a), pues todos los componentes de una p�gina web est�n situados dentro de una ventana. El objeto window hace referencia a la ventana actual. Veamos a continuaci�n sus propiedades y sus m�todos.
Propiedades
- closed.
V�lida a partir de Netscape 3 en adelante y MSIE 4 en adelante. Es un booleano que nos dice si la ventana est� cerrada ( closed = true ) o no ( closed = false ).
- defaultStatus.
Cadena que contiene el texto por defecto que aparece en la barra de estado (status bar) del navegador.
- frames.
Es un array: cada elemento de este array (frames[0], frames[1], ...) es uno de los frames que contiene la ventana. Su orden se asigna seg�n se definen en el documento HTML.
- history.
Se trata de un array que representa las URLS visitadas por la ventana (est�n almacenadas en su historial).
- length.
Variable que nos indica cu�ntos frames tiene la ventana actual.
- location.
Cadena con la URL de la barra de direcci�n.
- name.
Contiene el nombre de la ventana, o del frame actual.
- opener.
Es una referencia al objeto window que lo abri�, si la ventana fue abierta usando el m�todo open() que veremos cuando estudiemos los m�todos.
- parent.
Referencia al objeto window que contiene el frameset.
- self.
Es un nombre alternativo del window actual.
- status.
String con el mensaje que tiene la barra de estado.
- top.
Nombre alternativo de la ventana del nivel superior.
- window.
Igual que self: nombre alternativo del objeto window actual.
M�todos
- alert(mensaje).
Muestra el mensaje 'mensaje' en un cuadro de di�logo
- blur().
Elimina el foco del objeto window actual. A partir de NS 3, IE 4.
- clearInterval(id).
Elimina el intervalo referenciado por 'id' (ver el m�todo setInterval(), tambi�n del objeto window). A partir de NS 4, IE 4.
- clearTimeout(nombre).
Cancela el intervalo referenciado por 'nombre' (ver el m�todo setTimeout(), tambi�n del objeto window).
- close().
Cierra el objeto window actual.
- confirm(mensaje).
Muestra un cuadro de di�logo con el mensaje 'mensaje' y dos botones, uno de aceptar y otro de cancelar. Devuelve true si se pulsa aceptar y devuelve false si se pulsa cancelar.
- focus().
Captura el foco del rat�n sobre el objeto window actual. A partir de NS 3, IE 4.
- moveBy(x,y).
Mueve el objeto window actual el n�mero de pixels especificados por (x,y). A partir de NS 4.
- moveTo(x,y).
Mueve el objeto window actual a las coordenadas (x,y). A partir de NS 4.
-
open(URL,nombre,caracteristicas).
Abre la URL que le pasemos como primer par�metro en una ventana de nombre 'nombre'. Si esta ventana no existe, abrir� una ventana nueva en la que mostrar� el contenido con las caracter�sticas especificadas. Las caracter�sticas que podemos elegir para la ventana que queramos abrir son las siguientes:
- toolbar = [yes|no|1|0].
Nos dice si la ventana tendr� barra de herramientas (yes,1) o no la tendr� (no,0).
- location = [yes|no|1|0].
Nos dice si la ventana tendr� campo de localizaci�n o no.
- directories = [yes|no|1|0].
Nos dice si la nueva ventana tendr� botones de direcci�n o no.
- status = [yes|no|1|0].
Nos dice si la nueva ventana tendr� barra de estado o no.
- menubar = [yes|no|1|0].
Nos dice si la nueva ventana tendr� barra de men�s o no.
- scrollbars = [yes|no|1|0].
Nos dice si la nueva ventana tendr� barras de desplazamiento o no.
- resizable = [yes|no|1|0].
Nos dice si la nueva ventana podr� ser cambiada de tama�o (con el rat�n) o no.
- width = px.
Nos dice el ancho de la ventana en pixels.
- height = px.
Nos dice el alto de la ventana en pixels.
- outerWidth = px.
Nos dice el ancho *total* de la ventana en pixels. A partir de NS 4.
- outerHeight = px.
Nos dice el alto *total* de la ventana el pixels. A partir de NS 4
- left = px.
Nos dice la distancia en pixels desde el lado izquierdo de la pantalla a la que se debe colocar la ventana.
- top = px.
Nos dice la distancia en pixels desde el lado superior de la pantalla a la que se debe colocar la ventana.
- prompt(mensaje,respuesta_por_defecto).
Muestra un cuadro de di�logo que contiene una caja de texto en la cual podremos escribir una respuesta a lo que nos pregunte en 'mensaje'. El par�metro 'respuesta_por_defecto' es opcional, y mostrar� la respuesta por defecto indicada al abrirse el cuadro de di�logo. El m�todo retorna una cadena de caracteres con la respuesta introducida.
- scroll(x,y).
Desplaza el objeto window actual a las coordenadas especificadas por (x,y). A partir de NS3, IE4.
- scrollBy(x,y).
Desplaza el objeto window actual el n�mero de pixels especificado por (x,y). A partir de NS4.
- scrollTo(x,y).
Desplaza el objeto window actual a las coordenadas especificadas por (x,y). A partir de NS4.
- setInterval(expresion,tiempo).
Evalua la expresi�n especificada despu�s de que hayan pasado el n�mero de milisegundos especificados en tiempo. Devuelve un valor que puede ser usado como identificativo por clearInterval(). A partir de NS4, IE4.
- setTimeout(expresion,tiempo).
Evalua la expresi�n especificada despu�s de que hayan pasado el n�mero de milisegundos especificados en tiempo. Devuelve un valor que puede ser usado como identificativo por clearTimeout(). A partir de NS4, IE4.
Me dejo en el tintero otras propiedades y m�todos como innerHeight, innerWidth, outerHeight, outerWidth, pageXOffset, pageYOffset, personalbar, scrollbars, back(), find(["cadena"],[caso,bkwd]), forward(), home(), print(), stop()... todas ellas disponibles a partir de NS 4 y cuya explicaci�n remito como ejercicio al lector interesado en saber m�s sobre el objeto window.
<!-- Manual de JavaScript de WebEstilo.com -->
<HTML>
<HEAD>
<title>Ejemplo de JavaScript</title>
<script LANGUAGE="JavaScript">
<!--
function moverVentana()
{
mi_ventana.moveBy(5,5);
i++;
if (i<20)
setTimeout('moverVentana()',100);
else
mi_ventana.close();
}
//-->
</script>
</HEAD>
<BODY>
<script LANGUAGE="JavaScript">
<!--
var opciones="left=100,top=100,width=250,height=150", i= 0;
mi_ventana = window.open("","",opciones);
mi_ventana.document.write("Una prueba de abrir ventanas");
mi_ventana.moveTo(400,100);
moverVentana();
//-->
</script>
</BODY>
</HTML>
Esta es la primera aportacion que hago en el manual, y se refiere a una operacion concreta con el objeto 'window'. La idea de esta aportacion sale de una pregunta formulada por Rober (el 02/12/2003) en el foro de JavaScript que por causas que ignoro no admite respuestas (tal vez deba reportarlo como error). La pr�ctica consiste en detectar si una ventana (secundaria) ha sido abierta desde otra (principal). Para ello me voy a valer del evento 'onError' (presupongo que no hay ningun error en el codigo fuente de la p�gina) y de la propiedad 'opener'. El script resultante es de la forma:
<script language="JavaScript">
function A()
{
window.onerror=B
window.opener.focus();
window.focus();
alert("Esta ventana SI tiene opener");
}
function B()
{
alert("No hay ningun opener para esta ventana.");
return true;
}
</script>
Supongamos que desde una ventana principal se abre una secundaria que lleva este script y mediante un evento 'onLoad' en la etiqueta 'body' se llama y se ejecuta la funcion A();. En esta funcion primero se define que en caso de error (onError) se ejecute la funcion B() para evitar la alerta de error que viene por defecto en el navegador. Esta funcion B() solo se ejecutar� en caso de que se produzca un error durante la ejecuci�n de la funcion A(), y lleva la instruccion de no retornar y reemprender la ejecucion de la funcion desde la que fu� llamada. La funcion A() simplemente trata de acceder a un objeto de una posible ventana parental para forzar un error conocido; en este caso trato de forzar el error accediendo a la propiedad 'opener' de la ventana secundaria: si no existe este 'opener' se producir� el error ("'window.opener' es nulo o no es un objeto"); si existe se continuar� con la ejecucion de la funci�n. Para evitar confusiones es necesario que esta funcion solo est� dirigida a forzar el error en vez de hacer otras operaciones no relacionadas con la finalidad de forzar este error conocido y que puedan originar otro error (en estos casos el evento onError se activaria igualmente aun existiendo realmente una ventana parental); por ejemplo supongamos que hay la siguiente funcion A():
function A()
{
window.onerror=B
window.opener.focus();
window.focus();
document.getElementById('a').style.visibility = "hidden"; //referida a un objeto inexistente
alert("Esta ventana SI tiene opener");
}
En caso que por despiste no exista realmente ningun objeto identificado como 'a' se producir�a el error aun habiendo sido abierta la p�gina desde otra principal. para evitar estos errores es necesario utilizar esta funcion de forma aislada y dirigida a un solo obetivo (forzar y detectar este error); tambien se puede hacer comparando el mensaje de error esperado con el que realmente se produce, de la siguiente forma:
<script language="JavaScript">
function A()
{
window.onerror=B
window.opener.focus();
window.focus();
document.getElementById('a').style.visibility = "hidden";
alert("Esta ventana SI tiene opener");
}
function B(mensaje)
{
if (mensaje=="'window.opener' es nulo o no es un objeto")
{
alert(mensaje);
return true;
}
return true;
}
</script>
donde lo que se hace simplemente es comprobar que el error que se produce es el esperado.
Los codigos han sido probados en MS Internet Explorer versiones 5.0, 5.5 y 6.0.
Espero que sea de ayuda.
jbosch(vosk)