Abrir PopUp o ventana emergente desde Flash
Para poder abrir un PopUp o una ventana emergente desde Flash es necesario hacer una llamada a una función de JavaScript, la cual debe estar en el HTML/PHP/página donde se carga el SWF.
El siguiente código deberá insertarse dentro de los tags de <head> y </head>:
-
<script><!--
-
function abreVentana(pagina, nombre_ventana, ancho, alto, mostrar_statusbar, mostrar_menubar, mostrar_scrolls, redimensionar, mostrar_toolbar, mostrar_direccion)
-
{
-
var opciones = "top = 0, left = 0, width = " + ancho + ", height = " + alto + ", status = " + mostrar_statusbar + ", menubar = " + mostrar_menubar + ", scrollbars = " + mostrar_scrolls + ", resizable = " + redimensionar + ", toolbar = " + mostrar_toolbar + ", location = " + mostrar_direccion;
-
window.open(pagina, nombre_ventana, opciones);
-
}
-
// --></script>
La función abreVentana recibe 10 parámetros/argumentos, si bien estos parámetros podrían dejarse fijos dentro de la función de JavaScript, hacerlo de la forma como está escrito arriba le da el manejo a los archivos SWF de abrir las ventanas con las opciones que nosotros queramos. Imaginemos que tenemos dos SWFs en un mismo HTML y esos dos SWFs tienen que abrir dos ventanas emergentes de diferente tamaño; al hacerlo de esta forma no tendríamos que cambiar la función de JavaScript ni crear una nueva, simplemente tenemos que definir las propiedades de la ventana emergente dentro de los botones de nuestro JavaScript.
Los nombres de los parámetros que recibe la función son bastante explicativos, aún así explicaremos cada uno de ellos:
» pagina: URL de la página que se desea abrir en el PopUp
» nombre_ventana: Nombre de la vetana emergente o PopUp. Por ejemplo, suponiendo que tenemos dos botones y que uno abrirá la página "Contacto" con tamaño 400 x 250 y otro abrirá la página "Acerca de Nosotros" con tamaño 500 x 350. Si les pusieramos el mismo nombre de ventana y primero abriéramos la página de Contacto, al darle click al segundo botón y abrir la página de "Acerca de Nosotros" se nos estaría abriendo en la ventana de Contacto a un tamaño de 400 x 250
» ancho: Ancho (Width) en pixeles del tamaño de la ventana
» alto: Alto (Height) en pixeles del tamaño de la ventana
» mostrar_statusbar: yes si queremos que muestre la barra de estatus, no en caso contrario
» mostrar_menubar: yes si queremos que muestre la barra de menú, no en caso contrario
» mostrar_scrolls: yes si queremos que muestre los scrollbars, no en caso contrario
» redimensionar: yes si queremos que el usuario pueda redimensionar la ventana, no en caso contrario
» mostrar_toolbar: yes si queremos que muestre la barra de herramientas, no en caso contrario
» mostrar_direccion: yes si queremos que muestre la barra de navegación, no en caso contrario
Aunque se especifiquen estas propiedades dentro de una ventana emergente, es posible que algunas de estas propiedades no funcionen debido a la configuración personal del navegador del visitante.
Una vez insertado el código JavaScript, debes poner el siguiente código en nuestro botón de Flash (solamente debes cambiar el valor de los parámetros de la función de acuerdo a tus necesidades):
-
on(release) {
-
getURL("javascript:abreVentana('nombre_pagina.html', 'nombre_ventana', '500', '300', 'no', 'no', 'no', 'yes', 'no', 'no');");
-
}
La configuración de seguridad de tu Flash Player y navegador puede impedir que abras una ventana emergente de forma local. Si es tu caso entonces deberás subir tus archivos a un servidor y probarlo desde ahí.
Si te gustó esta entrada anímate a escribir un comentario o suscribirte al feed y obtener los artículos futuros en tu lector de feeds.
Comentarios
Hola Juan Manuel,
El problema no es que toda la página web esté en Flash.
Revisando tu código fuente veo que no tienes la parte de javascript que debe ser llamada.
Deberás agregar esto antes de cerrar el tag head (< /head> sin espacio):
-
<script language="javascript">
-
<!--
-
function abreVentana(pagina, nombre_ventana, ancho, alto, mostrar_statusbar, mostrar_menubar, mostrar_scrolls, redimensionar, mostrar_toolbar, mostrar_direccion)
-
{
-
var opciones = "top = 0, left = 0, width = " + ancho + ", height = " + alto + ", status = " + mostrar_statusbar + ", menubar = " + mostrar_menubar + ", scrollbars = " + mostrar_scrolls + ", resizable = " + redimensionar + ", toolbar = " + mostrar_toolbar + ", location = " + mostrar_direccion;
-
window.open(pagina, nombre_ventana, opciones);
-
}
-
// -->
-
</script>
Haz click sobre el borde café (donde dice Texto Plano) para poder seleccionar y copiar el código.
Saludos.
Me asombra la prontitud y rapidez con la que se atendió mi inquietud, muchas gracias..
Ya coloque el código en la pagina según su recomendación, pero aun tengo problemas para cargar el popup, que puede estar pasando?
Hola Juan Manuel,
Creo que ya encontré el problema. Si el código de tu botón en Flash es el mismo que aparece en el código fuente de tu página:
-
<a href="javascript:abreVentana('http://www.sonvaradero.com/Un%20sello%20de%20sabor.html', 'Un Sello de Sabor', '0', '0', '450', '350', 'no', 'no', 'no', 'no', 'no', 'no');" rel="nofollow"></a>
-
<a href="javascript:abreVentana('http://www.sonvaradero.com/Paseando%20por%20la%20Habana.html', 'Paseando por la Habana', '0', '0', '450', '350', 'no', 'no', 'no', 'no', 'no', 'no');" rel="nofollow"></a>
Entonces hay dos errores:
- El primero es que el nombre de la ventana no debe llevar espacios (truena en Internet Explorer), cámbialos a Un_Sello_de_Sabor o bien Sello o incluso Sabor (el nombre de la ventana no importa mucho, sólo sirve para que en caso de tener varios PopUps no se te abran todos en la misma venana) y el otro por Paseando_por_la_Habana o bien Paseando.
- El segundo error es que le estás pasando dos parámetros de más a la función (los dos primeros ceros que pusiste). Por lo tanto, puedes cambiar el código de tus botones por lo siguiente:
-
on(release)
-
{
-
getURL("javascript:abreVentana('http://www.sonvaradero.com/Un%20sello%20de%20sabor.html', 'Sello', '450', '350', 'no', 'no', 'no', 'no', 'no', 'no');");
-
}
-
-
on(release)
-
{
-
getURL("javascript:abreVentana('http://www.sonvaradero.com/Paseando%20por%20la%20Habana.html', 'Paseando', '450', '350', 'no', 'no', 'no', 'no', 'no', 'no');");
-
}
Por cierto, también es recomendable no ponerle espacios a los nombres de los archivos HTML.
Saludos.
Muchas gracias por su atenta colaboracion, sin embargo aun despues de corregir los errores que tenia en mi programacion, no me cargaba el pop-up.
Complemente la informacion que me brindaron con otra de otro web site y obtuve el siguiente codigo con el cual estoy trabajando a la perfeccion:
on (release) {
getURL("javascript:window.open('Paseando.html','Video','width=450,height=350'),void(0);");
}
hola, q tal quiciera saber como puedo hacer para ocultar la ruta que aparece dentro de mi popup, solo lo quiero ocultar, alguien me podria ayudar porfaa.. graciela ..
Hola Cristian,
Si te refieres a la barra de navegación, sólo deberás ponerle el valor de 'no' al último parámetro de la función. Sin embargo, es posible que debido al navegador o a la configuración del usuario, se siga mostrando la barra.
Saludos.
Gracias por este post. He utilizado este script en dos websites y funciona todo a la perfección.
Saludos.
@Carlos:
Dentro de la función de JavaScript tendrías que obtener el ancho y largo de la pantalla y restarle el alto y ancho (respectivamente) del Popup que se va a abrir; por último divides el valor en dos. Esos valores serán los de top y left:
-
function abreVentana(pagina, nombre_ventana, ancho, alto, mostrar_statusbar, mostrar_menubar, mostrar_scrolls, redimensionar, mostrar_toolbar, mostrar_direccion)
-
{
-
var top = (screen.height - alto) / 2;
-
var left = (screen.width - ancho) / 2;
-
var opciones = "top = " + top + ", left = " + left + ", width = 100, height = 100, status = no, menubar = no, scrollbars = no, resizable = no, toolbar = no, location = no";
-
window.open(pagina, nombre_ventana, opciones);
-
}
Necesito abrir en una ventana emergente parte de una pagina. Pero quisiera que se muestre solo parte de la pagina, se que dimencionando el ancho y alto se logra pero en este caso NO quiero mostrar parte del encabezado de la pagina mas bien deco que se muestre en la ventana emergente un acho de 980px por 500 px pero del centro de la pagina no empezando a medir esos 500px desde arriba, no se si me explico, pero si alguien me entiende y puede ayudarme le agradesco muchisimo.
SALUDOS
Cuál es el código en el botón de flash CS3 para abrir un popup??? ya logré colocar el código para el botón, pero como lo hago si lo que va a abrir es un popup???
Alguien que pueda ayudarme, por favor?
@Gilberto: Entendí tu pregunta pero no tengo ni idea de cómo hacerlo. Supongo que esa página que quieres mostrar no es tuya, porque si fuera tuya podrías probar usando anclas (anchor). Lo siento si no he sido de tu ayuda.
@Sheyla: El código de JS no tendrías que cambiarlo, para llamar la función de Javascript usando ActionScript 3 escribe:
-
import flash.external.ExternalInterface;
-
-
ExternalInterface.call("abreVentana", "nombre_ventana", "500", "300", "no", "no", "no", "yes", "no", "no");
Saludos.
Hola! tengo un problema con la popup, te explico
Tengo un ejecutable donde va el boton que abre la popup( flash cs3 as1y as2), la pagina que abre esta al mismo nivel que el ejecutable y contiene el script en el html ( hay insertado un swf realizado en as3), copiado y pegado de este hilo.
El problema que tengo es que me abre una pagina en blanco...esto porque es? como lo soluciono?
muchas gracias!!
necesito realizar una ventana emergente pero utilizo tu codigo y me sigue dando las mimas opciones que una ventana normal y ya nege todos los parametros que me pide el codigo ademas de colocar el codigo corecto de java ¡hay algo que estoy omitiendo
@Ulices: Algunos navegadores con ciertas versiones (como el IE) no permiten ocultar las opciones y las barras de herramientas.
Qué sucede en el caso de que el botón que deba abrir el pop-up esté en un swf que fue cargado con un loadmovie sobre el swf que está en el html que lleva el código?
Funciona igual.
Porque yo tengo problemas justamente con eso.
si está como lo plantean acá, ni un drama, si es como digo arriba, me salta el bloqueador de ventanas emergentes de Internet Explorer.
Gracias
Hola Matías,
Habría que jugar con los archivos.
A lo mejor podrías llamar una función del primer swf desde el segundo swf por medio de _root o _parent. Ejemplo:
-
// En el swf principal:
-
function llamaJavascript() {
-
getURL("javascript:abreVentana('nombre_pagina.html', 'nombre_ventana', '500', '300', 'no', 'no', 'no', 'yes', 'no', 'no');");
-
}
-
-
// En el swf secundario:
-
_root.llamaJavascript();
Saludos.
Buenas noches, seguí tu ejemplo y en firefox funciona correctamente hasta el momento. Pero el problema está con iexplore y como es el que usa la mayoría, es preocupante.
A ver, el botón flash tiene el siguiente código:
--
on(release){
getURL("javascript:abreVentana('chat.html', 'Live-Help', '270', '250', 'no', 'no', 'no', 'yes', 'no', 'no');");
}
--
Y en la página principal está el código que expusiste.
Al cargar la página con iexplore, el status bar me indica "Listo", como que no hubo errores y cuando le doy al botón correspondiente que abre el pop-up, el estado cambia a "Listo pero con errores" y no abre nada.
Indicame como puedo iniciar un depurador en iexplore y te muestro la salida por si sirve de algo.
Gabriel:
¿Ya abriste esta página en IE y probaste que funcionara?
Si es así entonces es probable que te equivocaras al modificar el código.
Saludos.
Carla:
La página anda perfecto, como dije: cuando termina de cargar completamente no hay errores, sólo cuándo se acciona sobre este botón. Y fue probada con anterioridad a esta modificación y estaba todo ok.
Saludos.
Bueno, investigando un poco encontré que iexplore me da "argumento no válido" en window.open(pagina, nombre_ventana, opciones).
Ahora, ni idea cual parámetro está erróneo y en que punto.
Lo que hice fue utilizar el código pero no hacerlo "genérico" o sea: defino la función abreChat() y a window.open le predefino los parámetros.
Me cansé y lo dejo así ![]()
Gracias.
Hola Amiga Carla Macias, tengo un problema y es el siguiente necesito abrir una ventana con popup desde un archivo flash en AS2 (swf) que a su vez contendrá (en le popup) un archivo flash en AS3(swf) de forma local en el disco duro. Esto para poder cerrar la pagina en AS3 y poder regresar a la aplicación con AS2 sin problemas de compatibilidad con las funciones.... En lo que me pudiera ayudar o guiar se lo agradeceré.
Saludos Carla, Gracias por tu inagotable paciencia.
¿Como no? Tengo un problema, no soy capaz de encontrar el motivo por el que no puedo abrir el popup que le indico. El caso es que me abre una página en blando y no presenta ninguna dirección en el navegador, no se que estoy haciendo mal.
Me puedes ayudar, gracias por todo.
Disculpa, lo más importante, estoy usando el Firefox y cuando intento abrir la ventana emergente, no actúa y sin embargo cuando ejecuto el archivo swf, es entonces cuando abre una página sin dirección en el navegador.
Ahora creo que está más digerible.
Gracias Carla.
Escribe un comentario
Nota: Es posible que tu comentario requiera autorización, si es así tu comentario será publicado a la brevedad. Gracias.




Gracias,
Al colocar los datos en el ejemplo me funciona perfectamente el popup..Pero cuando coloco el codigo ActionScript 2.0 en los botones de flash 8 no se ejecuta el comando..Tal vez sera porque estoy haciendo toda la pagina web en flash 8?
estas son las ventanas popup que estoy tratando de abrir:
http://www.sonvaradero.com/Un%20sello%20de%20sabor.html
http://www.sonvaradero.com/Paseando%20por%20la%20Habana.html