dominios y alojamiento web en hostalia

Apertura y configuración de popups con javascript

01 de enero de 2001
Valoración del artículo:
Este artículo te enseñará en profundidad como abrir ventanas secundarias y configurar su forma.
Atención: Contenido exclusivo de DesarrolloWeb.com. No reproducir. Copyright.
En determinadas ocasiones es muy útil abrir un enlace en una ventana secundaria, es decir, una ventana aparte que se abre para mostrar una información específica. Algunas ventajas de abrir un enlace en una ventana secundaria pueden ser que:
  • El usuario no se marcha de la página donde estaba el enlace.
  • La ventana secundaria se puede configurar libremente con lo que se pueden hacer ventanas más grandes o pequeñas y con más o menos menús.
  • En general, el grado de control de la ventana secundaria utilizando Javascript aumenta.
Pincha aquí para ver lo que es una ventana secundaria

Para abrir una ventana secundaria podemos hacerlo de dos maneras, con HTML y con Javascript. Veamos cada una de ellas

Abrir una ventana con HTML

Se puede conseguir abrir una ventana secundaria muy fácilmente con tan solo HTML. Para ello podemos utilizar el atributo TARGET de las etiquetas HREF. Si ponemos target="_blank" en el enlace, la página se abrirá en una ventana secundaria. También podemos poner target="xxx" para que el enlace se presente el la ventana llamada xxx o en el frame xxx.

El enlace tendría que tener esta forma:

<a href="mipagina.html" target="_blank">

El problema de abrir una página secundaria con HTML consiste en que no podemos definir la forma de ésta ni podremos ejercer mayor control sobre élla, tal como comentábamos entre las ventajas de abrir una ventana secundária con Javascript. La ventana que se abre siempre será como el usuario tenga definido por defecto en su navegador.

Abrir una ventana con Javascript

Para abrir una ventana con Javascript podemos utilizar la sentencia window.open(). No pasa nada por que no conozcas Javascript, puesto que es muy sencillo utilizarlo para este caso. Vamos a ver paso a paso cómo abrir una ventana secundaria utilizando Javascript.

1. Sentencia Javascript para abrir una ventana

La sentencia es simplemente la función window.open(), lo más complicado es saber cómo utilizar esa función, pero ahora veremos que no reviste ninguna complicación.

La función window.open() recibe tres parámetros, que se colocan dentro de los paréntesis, de este modo:

window.open(URL,nombre_de_la_ventana,forma_de_la_ventana)

Veamos rápidamente cada uno de estos parámetros por separado.

URL: representa el URL que deseamos abrir en la ventana secundaria, por ejemplo http://www.desarrolloweb.com
nombre_de_la_ventana: es el nombre que se le asigna a esta ventana para dirigir enlaces con el atributo target del HTML
forma_de_la_ventana: se indica el aspecto que va a tener la ventana secundaria. Por ejemplo se puede definir su altura, anchura, si tiene barras de desplazamiento, etc

Veamos un ejemplo de sentencia Javascript completa para abrir una ventana secundaria:

window.open("http://www.desarrolloweb.com" , "ventana1" , "width=120,height=300,scrollbars=NO")

Esto quiere decir que abra la página inicial de desarrolloweb.com en una ventana secundaria a la que vamos a llamar ventana1. Además, la ventana será de 120 pixels de ancho, 300 de alto y no tendrá barras de desplazamiento.

Una aclaración adicional, si después de abrir esa ventana colocamos otro enlace en la página que abría la ventana cuyo atributo target está dirigido hacia el nombre_de_la_ventana (en este caso ventana1), este enlace se mostrará en la ventana secundaria.

2. Función que abre una ventana

Lo más cómodo para abrir una ventana es colocar una función Javascript que se encarge de las tareas de abrirla y que reciba por parámetro la URL que se desea abrir.

El script es sencillo, veámoslo a continuación:

<script language=javascript>
function ventanaSecundaria (URL){
   window.open(URL,"ventana1","width=120,height=300,scrollbars=NO")
}
</script>


3. Colocamos un enlace

Este enlace no debe estar dirigido directamente a la página que queramos abrir, sino a la sentencia Javascript necesaria para abrir la ventana secundaria. Para ejecutar una sentencia Javascript con la pulsación de un enlace lo hacemos así:

<a href="javascript:sentencia_javascript_para_abrir_la_ventana">

4. El enlace llama a la función que abre la ventana

Ahora Veamos cómo quedaría todo ese enlace en la página.

<a href="javascript:ventanaSecundaria('http://www.desarrolloweb.com')"> Pincha en este enlace para abrir la ventana secundaria</a>

Que da como resulado:

Pincha en este enlace para abrir la ventana secundaria

(En la página que vayamos a colocar este enlace deberíamos tener el script que hemos hecho anteriormente que contenía la función para abrir la ventana.)

Hay que fijarse que las comillas simples que se colocan para definir el URL que se pasa como parámetro de la función ventanaSecundaria(). Son comillas simples porque el href del enlace ya tiene unas comillas dobles, y dentro de comillas dobles siempre se han de utilizar comillas simples a no ser que deseemos cerrar las comillas dobles.

Parámetros para dar forma a una ventana

Estos atributos los puedes utilizar en la función window.open() para definir la forma que deseas que tenga tu ventana secundaria.

Width Ajusta el ancho de la ventana. En pixels
Height Ajusta el alto de la ventana
Top Indica la posición de la ventana. En concreto es la distancia en pixels que existe entre el borde superior de la pantalla y el borde superior de la ventana.
Left Indica la posición de la ventana. En concreto es la distancia en pixels que existe entre el borde izquierdo de la pantalla y el borde izquierdo de la ventana.
Scrollbars Para definir de forma exacta si salen o no las barras de desplazamiento. scrollbars=NO hace que nunca salgan. Scrollbars=YES hace que salgan (siempre en ie y solo si son necesarias en NTS).
Resizable Establece si se puede o no modificar el tamaño de la ventana. Con resizable=YES se puede modificar el tamaño y con resizable=NO se consigue un tamaño fijo.
Directories
(barra directorios)
A partir de aquí se enumeran otra serie de propiedades que sirven para mostrar o no un elemento de la barra de navegación que tienen los navegadores más populares, como podría ser la barra de menús o la barra de estado.

Cuando ponemos el atributo=YES estamos forzando a que ese elemento se vea. Cuando ponemos atributo=NO lo que hacemos es evitar que ese elemento se vea.
Location
(barra direcciones)
Menubar
(barra de menús)
Status
(barra de estado)
Titlebar
(la barra del título)
Toolbar
(barra de herramientas)

Abrir una ventana sin un enlace

En otras ocasiones desearemos abrir una ventana secundaria automáticamente, es decir, sin necesidad de que el usuario pulse sobre ningún enlace. En este caso, el código de la función ventanaSecundaria nos sirve también y habrá que añadir una línea de código Javascript a continuación de la función ventanaSecundaria. Esta línea a añadir simplemente será una llamada a la función que se ejecutará según se está cargando la página. Veamos como quedaría este código:

<script language=javascript>
function ventanaSecundaria (URL){
   window.open(URL,"ventana1","width=120,height=300,scrollbars=NO")
}

ventanaSecundaria("http://www.desarrolloweb.com");
</script>


Queda en negrita lo que sería la llamada a la función que abre la ventana secundaria, como está fuera de una función se ejecuta según se está cargando la página.

Referencias: Hemos publicado un manual en DesarrolloWeb.com que explica en detalle cómo controlar ventanas secundarias. No solo abrirlas, también aprendemos a cerrarlas, comunicar entre ventanas, etc. Control de ventanas en Javascript

También hemos propuesto crear un popup con Javascript y capas (DHTML), que evita los sistemas que bloquean ventanas secundarias, ya que no es exactamente una ventana.


Si quieres, puedes descargarte el texto de esta ayuda técnica y los ejemplos. .zipventanassecundarias.zip 6Kb

Compartir en redes sociales

Comentarios
Fueron enviados 68 comentarios al artículo
47 comentarios no revisados
21 comentarios revisados:
Por: J.Isach
09/8/2001
Tengo alguna idea de como abrir ventanas, pero deseo que se abran automáticamente cuando transcurre un determinado tiempo (ej. 6 seg).

Para ello utilizo la funcion setTimeout de javascript, que recibe como parametros la instruccion a ejecutar y el tiempo de retardo en milisegundos.

setTimeout("window.open('http://www.desarrolloweb.com','w','width=500,height=400')",6000)

Al pulsar este boton se abre una ventana con retardo de 6 segundos

Por: David Masip
16/7/2002
He leido tu articulo a cerca de como abrir ventanas, tengo en una carpeta (c:\web) mis páginas web y estoy intentado mediante esa sentencia abrirlas, pero resulta que no me abre nada.

Me preguntaba si podrias decirme como puede escribir la URL de manera que me busque las páginas tanto en local como cuando esta en Web.

RESPUESTA:

Si quieres que encuentre las páginas tanto en local como el la web debes escribir los caminos relativos a la página donde estás abriendo la ventana, en lugar de caminos absolutos.

La idea es que, en la URL, sólamente indiques el nombre del archivo que deseas abrir, sin especificar ningún directorio, pues me dices que todas las páginas están en el mismo directorio.

Por: Joaquín Sastre
26/7/2002
Hola, quería pasaros la manera de abrir una ventana a pantalla completa:

window.open("http://www.xx.com","","fullscreen,scrollbars")

Por: Fabiaán
26/3/2003
Actualmente estoy empezando a trabajar de lleno con la familia Macromedia y para ser más exacto con DREAMWEAVER. Me podríais indicar dónde debo escribir el codigo de JAVASCRIPT en DREAMVEAVER para abrir una ventana secundaria?? Gracias

RESPUESTA

Pues deberías escribir el código en cualquier lugar de la página. Pero fíjate de colocar el código en vista código y no en vista diseño, puesto que si lo haces en vista diseño saldría escrito el código en la página en lugar de no salir nada y abrir el popup, que es lo que debería pasar.

De todos modos, te indico que Dreamweaver tiene una serie de comportamientos muy útiles entre los que se encuentra la apertura de ventanas secundarias. Posiblemente te sea más sencillo utilizarlos en lugar de colocar tu mismo el código Javascript.

Por: JGM
02/3/2004
Tambien podeis hacer una ventanita asi:<script>alert('Hola gente')</script>
Por: Jesus Alfredo Moran
27/3/2004
Ok, ya he aprendido a abrir una ventana desde un documento HTML, pero ahora como se hace para poder abrir una ventana desde un código php?, ya que se requiere al momento de abrir una imágen este tipo de código... Cual sería el camino a tomar. Gracias.
Por: Armando Salinas
21/4/2005
Hola....Necesito abrir una pagina de internet desde mi intranet, como le envio el usuario y contraseña del proxy?..

Gracias.....
Por: Joel Cortes
26/5/2005
alguien podria ayudarme, quisiera saber el codigo para abrir una ventana secundaria dando clik en una imagen..
espero me respondan pronto..gracias
Por: Anibal
30/5/2005
Hola Joel, lo que quieres hacer esmuy simple, solo tienes que incluir el window.open() en el evento onclick() de la imagen, por ejemplo:

<img src="/imagenes/yo.jpg" onclick="javascript: window.open('archivo.html','nombre','parametros')">
Por: SilentHades
11/6/2005
Señores de desarrollo web, muy buena la información; funciona con IE, pero no funciona con Mozilla, espero que puedan ayudarme... de veras necesito sacar ese popup en mozilla...
Por: lisandro
06/7/2005
Quisiera preguntar, este script funciona perfectamente en mac tambien ? Muchas gracias
Por: jonas
09/7/2005
Trabajando en local con javascript, el parámetro "status" funciona. La ventana segundaria abre sin barra de estatus. Pero en internet propiamente, éste no funciona, y se ve la barra.

Por otra parte. el parámetro Titlebar no me funciona en local ni en internet, en la instrucción Titlebar=NO.

Gracias a Desarrollo Web por el tremendo soporte.
Jonas
Por: David Girona
16/12/2005
La forma adecuada para abrir ventanas dista mucho de la forma en que habitualmente se hace. Entre otras muchas cosas porque los navegadores no pueden arañar su contenido, esencial hoy dia ...

A continuación describo la forma adecuada de como hacerlo:

script:
function pop(pagina,ventana,parametros){
window.open(pagina,ventana,parametros);
}

html:


<a href="pop.html" target="ventana" onclick="pop(this.src,this.target,'scrollbars=yes'); return false;">Abrir Ventana</a>

Un saludo a todos y feliz navidad.
Por: Alejandro Hernández
06/5/2006
Hola tengo una duda sobre ventanas en javascript se puede controlar con javascript o con otro lenguaje el minimizar, maximizar de las ventanas que abrimos..es decir ya que las abrimos y las cerramos..espero que no sea una pregunta demasiado tonta pero es algo que encesito para un sistema.espero me puedan ayudar muchas gracias de ante mano
Por: BoKe
19/7/2006
Para abrir una ventana con php, nos podemos ayudar del javascript:
la llamada seria:

abrir_popup("www.google.com","top=10 ,left=500 ,width=350, height=150, scrollbars=no, menubar=no, location=no, resizable=no");

y la funcion:

function abrir_popup($url,$parametros){

?>

<script language="JavaScript">
window.open("<?echo $url;?>","","<?echo $parametros;?>")
</script>
<?

}

Saludos
Por: Andrés González Tenorio
28/9/2006
Sobre el ultimo comentario del compañero David Girona sobre la forma adecuada de abrir ventanas es magnifico solo tiene una pequeña falla.

El mismo funciona excelentemente para html puro, pero no asi cuando se utiliza jsp pues abre la ventana y por unos segundos da la impresion de que paso un error y luego carga la pagina correctamente.

Se que la forma funciona pero el cliente que use una aplicación web y que note dicho cambio podria preocuparse pensando que hay una falla en la aplicación y causarnos un monton de problemas por dicha impresión erronea que se puede llevar el cliente.

En tal caso el problema se soluciona en la función en vez de usar this.src poner la dirección de la página. Se que eso va encontra del objetivo del de este excelente ejemplo pero a menos que alguien tenga una mejor forma de corregir este pequeño inconveniente.

Por lo demas esta pagina es excelente.
Por: Luis
23/3/2007
Oye como puedo hacer que al darle clik a una imagen aparezca la ventana pop-up.

RESPUESTA

Pues simplemente pon un link en la imagen que ejecute el comando javascript para abrir el popup... algo como <a href="javascript:abrir_popup()"><img src=imagen.gif></a>

juanchi...
JavaScript + php + BD
21/11/2009
Hola! Alguien me podria dar una idea de como crear una ventana con información que se encuentra almacenada en una base de datos. Esto es que un usuario guarde avisos en una pagina de captura, los guarde en una base de datos y despues mediante una casilla pueda tomar esta información y volverla una ventana.
Gracias!

Alguien publico estoo...mi problema es parecido..
Necesito un buscador q me recupere de la base de datos lo q kiero buscar obviamente pero necesito hacerlo con php como podria hacerlo? muchas gracias de ante mano :D

kiosera
Ventanas secundarias bloqueadas por los navegadores
27/7/2010
Buen día Miguel,

Estoy usando este código para abrir una ventana emergente o secundaria automáticamente:

<script language=javascript>
function ventanaSecundaria (URL){
window.open(URL,"ventana1","width=120,height=300,scrollbars=NO")
}

ventanaSecundaria("http://www.desarrolloweb.com");
</script>

Sin embargo, los navegadores evitan el acceso por el control que tienen de bloqueo de ventanas emergentes. Tenés algún código adicional de javascript que permita saltarse ese bloqueo de los navegadores?

Desde ya muchas gracias por tu respuesta.

Cordial saludo.

manuel_...
ventanas
19/8/2010
hola:
He visto que es posible abrir una ventana de forma automática.
¿Es posible simultaneamente cerrar la página encargada de abrir esta segunda con mozilla?
En explorer funciona (adjunto el código) pero manda un mensaje de aviso.
¿Se puede evitar ese mensaje?
Un saludo


El codigo que he usado es:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//ES" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<script language=javascript>
function ventanaSecundaria (URL)
{
window.open(URL,"V1","menubar=no,titlebar=no,toolbar=no,location=no,status=no,directories=no,fullscreen")
}

ventanaSecundaria("index.php");
window.close();
</script>
</head>
<body>
</body>
</html>

ibanete
abrir pagina desde el escritorio
08/6/2011
yo quiero abrir la pagina principal de mi aplicacion web desde un icono o un boton en el escritorio, como si fuera una aplicacion de windows normal como lo hago?

Manuales relacionados
Categorias relacionadas
El autor
Lectura recomendada
Compra este libro en Agapea, la librería urgente a domicilio.
Últimas noticias
Donaciones
Si piensas que te hemos ayudado y merecemos tu apoyo económico...