Foros del Web » Programando para Internet » Javascript »

Cómo pasar una variable Javascript a variable HTML en el BODY a usarse con un SWF

Estas en el tema de Cómo pasar una variable Javascript a variable HTML en el BODY a usarse con un SWF en el foro de Javascript en Foros del Web. Mis estimados, soy demasiado nuevo en javascript y se que debo usarlo para hacer lo que necesito. Tengo un SWF que necesita un valor de ...
  #1 (permalink)  
Antiguo 16/03/2012, 14:45
 
Fecha de Ingreso: marzo-2012
Mensajes: 10
Antigüedad: 12 años, 8 meses
Puntos: 0
Cómo pasar una variable Javascript a variable HTML en el BODY a usarse con un SWF

Mis estimados, soy demasiado nuevo en javascript y se que debo usarlo para hacer lo que necesito.

Tengo un SWF que necesita un valor de texto en "Flashvars" para saber a qué escena ir.

A eso ya lo se hacer, pero necesito que ese valor de texto sea el nombre de la página web donde está incluido el SWF
Por ejemplo: si el SWF está en "Pagina1.htm", tengo que poner un pequeño módulo de javascript que detecte el nombre de la página
Si el SWF está en la página 2, la variable deberá dar "Pagina2.htm" , etc.

Se hace con esto que conseguí:

function showfile() {
var pathname = location.pathname;
var filename = pathname.substr(pathname.lastIndexOf("\\")+1,pathn ame.length);
alert(filename);
}

Luego para el BODY, con
<input type="button" value="Path+File" onclick="showpath()">
me muestra el nombre de archivo htm en un cuadro de diálogo

Pero yo no necesito eso, sino que ese "nombre de archivo en formato de texto"que sale de showfile()
tiene que ir a una variable que se escribe en dos lugares dentro del BODY
<PARAM NAME=FlashVars value="aquí el valor de variable para nombre de archivo.htm">
y
<embed src="BERSA-spa-Menu.swf" FlashVars="aquí el valor de variable para nombre de archivo.htm" ..... etc

Probé decenas de formas y no me sale

Por favor si alguno tiene la amabilidad de mostrarme un ejemplo claro porque aún no entiendo cómo trabaja javascript
Ayuda por favooorrrrrrrrrr
Muchas gracias
Gussiglo21
  #2 (permalink)  
Antiguo 16/03/2012, 20:27
 
Fecha de Ingreso: octubre-2010
Mensajes: 107
Antigüedad: 14 años, 1 mes
Puntos: 14
Respuesta: Cómo pasar una variable Javascript a variable HTML en el BODY a usarse con

Hola,

En la funcion "showfile()" puedes hacer que se ponga "filename" como valor de los parametros html que necesitas, esto, podria realizarse de la siguiente manera:

Código Javascript:
Ver original
  1. function showfile() {
  2. var pathname = location.pathname;
  3. var filename = pathname.substr(pathname.lastIndexOf("\\")+1,pathn ame.length);
  4.  
  5. document.getElementById("idDelParam").setAttribute("value",filename);
  6.  
  7. document.getElementById("idDelEmbed").setAttribute("FlashVars",filename);
  8.  
  9.  
  10. }

El metodo setAttribute nos permite crear/modificar un parametro de un elemento html.
Debes asignarle un id al param y al embed, y reemplazar a idDelParam y idDelEmbed, respectivamente.
  #3 (permalink)  
Antiguo 17/03/2012, 01:23
 
Fecha de Ingreso: marzo-2012
Mensajes: 10
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: Cómo pasar una variable Javascript a variable HTML en el BODY a usarse con

Estimado Marcasteleon, muchas gracias por tu respeusta.
intentaré eso que dices mañana, pero lo más probable será que te pregunte cómo hago para hacer la parte del código HTML.
De todas formas es probable que el domingo lo intente más tranquilo
Luego te avisaré a ver qué sucedió.
Muchas gracias!
  #4 (permalink)  
Antiguo 18/03/2012, 17:33
 
Fecha de Ingreso: marzo-2012
Mensajes: 10
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: Cómo pasar una variable Javascript a variable HTML en el BODY a usarse con

Cita:
Iniciado por MARCASTELEON Ver Mensaje
Hola,

En la funcion "showfile()" puedes hacer que se ponga "filename" como valor de los parametros html que necesitas, esto, podria realizarse de la siguiente manera:

Código Javascript:
Ver original
  1. function showfile() {
  2. var pathname = location.pathname;
  3. var filename = pathname.substr(pathname.lastIndexOf("\\")+1,pathn ame.length);
  4.  
  5. document.getElementById("idDelParam").setAttribute("value",filename);
  6.  
  7. document.getElementById("idDelEmbed").setAttribute("FlashVars",filename);
  8.  
  9.  
  10. }

El metodo setAttribute nos permite crear/modificar un parametro de un elemento html.
Debes asignarle un id al param y al embed, y reemplazar a idDelParam y idDelEmbed, respectivamente.
--------------------------
HOLA MARCASTELEON

He intentado decenas de formas y aún no me sale lo que quiero y tengo poca experiencia en programación HTML y Javascript.
El código de la página de pruebas es simple. Tiene el SWF y un pequeño texto.

El SWF llamado "pelicula.swf" tiene internamente una variable llamada "selector" que recibe su valor a través de Flashvars en la página HTM.
Si el SWF está en "pagina1.htm", el SWF va a la escena 1.
Si el SWF está en "pagina2.htm", el SWF va a la escena 2. y así sucesivamente para las diferentes páginas

Tal como lo hice manualmente funciona, pero en cada uno de los SWF debo colocarle manualmente el nombre de la página para la variable "selector"
Justamente eso es lo que quiero que cambie automáticamente con el JavaScript.

He intentado hacer lo que me dijiste , de dar un "id" al "param" y al "embed" pero ya me estoy volviendo loco y no me sale.

Aquí te paso el código de la página incluyendo tu script en el HEAD y el código html donde está el SWF en el Body.

Si eres tan amable, y si puedes, decirme cómo hay que modificar o qué líneas debo agregar.
Las dos que importan para el SWF son:

<PARAM NAME=FlashVars value="selector=index.htm">
y <embed src="pelicula.swf" FlashVars="selector=index.htm" .......

Igual seguiré intentando mientras tanto
Muchas gracias!!!!!!!!
GusSiglo21

CÓDIGO DE LA PÁGINA DONDE ESTA EL SWF........

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>TITULO</title>

<script language="JavaScript">
function showfile() {
var pathname = location.pathname;
var filename = pathname.substr(pathname.lastIndexOf("\\")+1,pathn ame.length);
document.getElementById("idDelParam").setAttribute ("value",filename);
document.getElementById("idDelEmbed").setAttribute ("FlashVars",filename);
}
</script>

</head>

<body>
<p>
<object classid="clsid:D27CDB6E-AE6D-11CF-96B8-444553540000" id="obj1" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" border="0" width="129" height="430">
<param name="movie" value="pelicula.swf">
<PARAM NAME=FlashVars value="selector=index.htm">
<param name="quality" value="Best">
<embed src="pelicula.swf" FlashVars="selector=index.htm" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" name="spa_menu" width="129" height="430" quality="Best" menu="false"></object>

&nbsp;texto de la página</p>
<p>
&nbsp;</p>
</body>

</html>
  #5 (permalink)  
Antiguo 18/03/2012, 20:32
 
Fecha de Ingreso: octubre-2010
Mensajes: 107
Antigüedad: 14 años, 1 mes
Puntos: 14
Respuesta: Cómo pasar una variable Javascript a variable HTML en el BODY a usarse con

Hola,

Ahora que veo el codigo de la pagina todo es mas claro. Prueba cambiando el script, asi:

Código Javascript:
Ver original
  1. window.onload=showfile;// se hace que se jecute la funcion cuando se carga la pagina
  2.  
  3. function showfile() {
  4. var pathname = location.pathname;
  5. var filename = pathname.substr(pathname.lastIndexOf("/")+1,pathname.length);//en esta linea habia un espacio entre path y name "...,path name.le....." y se cambia "\\" por "/" ya que el "/" es el que se utiliza en la url y no "\\"
  6. document.getElementById("idParam").setAttribute ("value","selector="+filename);//se agrega "selector=" para que quede algo como "selector=index1.html"
  7. document.getElementById("idEmbed").setAttribute ("FlashVars","selector="+filename);
  8. }

Pueba con esto y me dices como resulto.

pd: recuerda que debes colocarle un id a la etiqueta PARAM y a la embed, en el codigo que te escribo, asumo que estos ids son idParam y idEmbed respectivamente.
  #6 (permalink)  
Antiguo 18/03/2012, 22:31
 
Fecha de Ingreso: marzo-2012
Mensajes: 10
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: Cómo pasar una variable Javascript a variable HTML en el BODY a usarse con

Cita:
Iniciado por MARCASTELEON Ver Mensaje
Hola,

Ahora que veo el codigo de la pagina todo es mas claro. Prueba cambiando el script, asi:

Código Javascript:
Ver original
  1. window.onload=showfile;// se hace que se jecute la funcion cuando se carga la pagina
  2.  
  3. function showfile() {
  4. var pathname = location.pathname;
  5. var filename = pathname.substr(pathname.lastIndexOf("/")+1,pathname.length);//en esta linea habia un espacio entre path y name "...,path name.le....." y se cambia "\\" por "/" ya que el "/" es el que se utiliza en la url y no "\\"
  6. document.getElementById("idParam").setAttribute ("value","selector="+filename);//se agrega "selector=" para que quede algo como "selector=index1.html"
  7. document.getElementById("idEmbed").setAttribute ("FlashVars","selector="+filename);
  8. }

Pueba con esto y me dices como resulto.

pd: recuerda que debes colocarle un id a la etiqueta PARAM y a la embed, en el codigo que te escribo, asumo que estos ids son idParam y idEmbed respectivamente.
----------------------------
HOLA MARCASTELEON

Nuevamente gracias por tu tiempo y tu ayuda.
Algo cambió ahora!!!!!!! pero además sigo tratando de leer otras páginas también a entender cómo funciona esto.

Lo primero que noté luego de leer en
http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_document_getelementbyi d
es que en el ejemplo que ellos dan, el código JavaScript está en el BODY.
Yo lo tenía en el HEADER.
Bien.... coloqué este nuevo script tuyo que me pasaste poniéndolo en el body y creé los "id", fíjate:

Ahora el header sólo tiene el título (PERO MÁS ABAJO TE CUENTO LO QUE OCURRE AHORA)

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>TITULO</title>
</head>

<body>
<script language="JavaScript">
window.onload=showfile;// se hace que se ejecute la funcion cuando se carga la pagina
function showfile() {
var pathname = location.pathname;
var filename = pathname.substr(pathname.lastIndexOf("/")+1,pathname.length);//en esta linea habia un espacio entre path y name "...,path name.le....." y se cambia "\\" por "/" ya que el "/" es el que se utiliza en la url y no "\\"

document.getElementById("idParam").setAttribute ("value","selector="+filename);//se agrega "selector=" para que quede algo como "selector=index1.html"

document.getElementById("idEmbed").setAttribute ("FlashVars","selector="+filename);
}
</script>
<p>
<object classid="clsid:D27CDB6E-AE6D-11CF-96B8-444553540000" id="obj1" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" border="0" width="129" height="430">
<param name="movie" value="pelicula.swf">
<PARAM id="idParam" NAME=FlashVars value="selector=index.htm">
<param name="quality" value="Best">
<param name="menu" value="false">
<embed id="idEmbed" src="pelicula.swf" FlashVars="selector=index.htm" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" name="spa_menu" width="129" height="430" quality="Best" menu="false"></object>

&nbsp;</p>
<p>
Esta es de prueba</p>
</body>
</html>


Si bien la lista desplegable de mi Front Page no me mostraba el ítem "id" para PARAM se lo puse igual
<PARAM id="idParam" NAME=FlashVars value="selector=index.htm">
y en el embed que corresponde al SWF lo puse sin inconvenientes.
Creo que quedaron bien puestos.

Lo único que me queda la duda es si en <PARAM id="idParam" NAME=FlashVars value="selector=index.htm">
el ítem "value" tiene que seguir así como te lo muestro que era el valor original ="selector=index.htm" ya que en mis páginas de prueba no hay ninguna llamada así
Lo mismo para la etiqueta <embed del SWF que aún contiene FlashVars="selector=index.htm"


AQUÍ TE CUENTO LO QUE OCURRE:

Tengo 3 páginas con las que estoy haciendo estas pruebas que contienen el SWF preparado y todas son idénticas: 0-prueba.htm , empresa.htm y productos.htm
El SWF está preparado para recibir los valores "0-prueba.htm" , "empresa.htm" y "productos.htm"
O sea que lo único que tendría que cambiar a la vista del usuario es la escena del SWF dependiendo del "filename"

Por lo visto algo ya funciona...

En GOOGLE CHROME:
- cuando entro a 0-prueba.htm, el SWF me muestra la palabra "Inicio" (que está en la escena llamada Inicio)
- cuando entro a empresa.htm, el SWF me muestra la palabra "empresa" (que está en la escena llamada empresa)
- cuando entro a productos.htm, el SWF me muestra la palabra "productos" (que está en la escena llamada Productos)

O sea que en Google Chrome FUNCIONA BIEN!!!!!!!!!!!!!!!!

Pero algo está fallando también porque ni en Internet Explorer ni en Firefox funciona y así yo entre a cualquiera de las 3 páginas , el SWF me muestra siempre la escena 1...

Seguiré investigando, mientras tanto te muestro a ver si a tí se te ocurre qué puede ser lo que impide que en diferentes navegadores no ocurra lo mismo.
Intentaré colocar el Script en el header a ver si algo cambia mientras tanto
Como te dije, en Google Chrome parece funcionar bien.

Espero tus comentarios cuando puedas

Nuevamente un gracias enorme!!!!!

Gussiglo21
  #7 (permalink)  
Antiguo 18/03/2012, 22:43
 
Fecha de Ingreso: marzo-2012
Mensajes: 10
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: Cómo pasar una variable Javascript a variable HTML en el BODY a usarse con

Cita:
Iniciado por MARCASTELEON Ver Mensaje
Hola,

Ahora que veo el codigo de la pagina todo es mas claro. Prueba cambiando el script, asi:

Código Javascript:
Ver original
  1. window.onload=showfile;// se hace que se jecute la funcion cuando se carga la pagina
  2.  
  3. function showfile() {
  4. var pathname = location.pathname;
  5. var filename = pathname.substr(pathname.lastIndexOf("/")+1,pathname.length);//en esta linea habia un espacio entre path y name "...,path name.le....." y se cambia "\\" por "/" ya que el "/" es el que se utiliza en la url y no "\\"
  6. document.getElementById("idParam").setAttribute ("value","selector="+filename);//se agrega "selector=" para que quede algo como "selector=index1.html"
  7. document.getElementById("idEmbed").setAttribute ("FlashVars","selector="+filename);
  8. }

Pueba con esto y me dices como resulto.

pd: recuerda que debes colocarle un id a la etiqueta PARAM y a la embed, en el codigo que te escribo, asumo que estos ids son idParam y idEmbed respectivamente.



O sea.... si el valor "value" y el valor "Flashvars lo da la función.....
creo que dejar =index.htm en el <PARAM y en el <EMBED es innecesario
¿¿¿pero si lo quito de esas etiquetas cómo deben quedar estas etiquetas?????

<PARAM id="idParam" NAME=FlashVars value="selector=index.htm">

<embed id="idEmbed" src="pelicula.swf" FlashVars="selector=index.htm".. etc etc

Qué raro, ¿como puede ser que en el Chrome funcione y en los otros no?
  #8 (permalink)  
Antiguo 19/03/2012, 14:32
 
Fecha de Ingreso: octubre-2010
Mensajes: 107
Antigüedad: 14 años, 1 mes
Puntos: 14
Respuesta: Cómo pasar una variable Javascript a variable HTML en el BODY a usarse con

Hola,

La etiqueta script se puede colocar en el body, en el header o despues de la etiqueta html, te sugiero que la coloques en el header. Respecto al valor de los parametros en cuestion los puedes dejar vacios o incluso quitarlos, o sea:


<PARAM id="idParam" NAME=FlashVars value="">

<embed id="idEmbed" src="pelicula.swf" FlashVars="" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" name="spa_menu" width="129" height="430" quality="Best" menu="false">


ó quitarlos

<PARAM id="idParam" NAME=FlashVars >

<embed id="idEmbed" src="pelicula.swf" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" name="spa_menu" width="129" height="430" quality="Best" menu="false">


Prueba si haciendo estos cambios funciona y escribes como resulto.

Última edición por MARCASTELEON; 19/03/2012 a las 14:40
  #9 (permalink)  
Antiguo 19/03/2012, 19:56
 
Fecha de Ingreso: marzo-2012
Mensajes: 10
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: Cómo pasar una variable Javascript a variable HTML en el BODY a usarse con

Cita:
Iniciado por MARCASTELEON Ver Mensaje
Hola,

La etiqueta script se puede colocar en el body, en el header o despues de la etiqueta html, te sugiero que la coloques en el header. Respecto al valor de los parametros en cuestion los puedes dejar vacios o incluso quitarlos, o sea:


<PARAM id="idParam" NAME=FlashVars value="">

<embed id="idEmbed" src="pelicula.swf" FlashVars="" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" name="spa_menu" width="129" height="430" quality="Best" menu="false">


ó quitarlos

<PARAM id="idParam" NAME=FlashVars >

<embed id="idEmbed" src="pelicula.swf" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" name="spa_menu" width="129" height="430" quality="Best" menu="false">


Prueba si haciendo estos cambios funciona y escribes como resulto.
==================================================


HOLA MARCASTELEON

Probé de ambas formas, colocando los parametros con value = ""
y en el embed Flashvars = "" ...... y dejándolos sin valores tal como dijiste

FORMA 1:
<PARAM id="idParam" NAME=FlashVars> ................... (sin value.....)
<embed id="idEmbed" src="pelicula.swf" ......................... (sin Flashvars!!!)

FORMA 2:
<PARAM id="idParam" NAME=FlashVars value=""> ........ (con value "")
<embed id="idEmbed" src="pelicula.swf" Flashvars="" ......... (con Flashvars="")

FORMA 3: La FORMA ORIGINAL de esto era:
<PARAM id="idParam" NAME=FlashVars value="selector=empresa.htm"> ....... (nombre de página puesto explícitamente.)
<embed id="idEmbed" src="pelicula.swf" FlashVars="selector=empresa.htm" .... (nombre de página puesto explícitamente)

De esta última forma, por supuesto, funciona en todos los navegadores

En TODAS LAS FORMAS funciona bien con el Google Chrome.
Al cambiar de página, el SWF cambia como debe.

No ocurre lo mismo con Internet Explorer y Mozilla,
Estos solo funcionan con los nombres explícitos de los archivos para los valores que deberían tomar del javascript.
En las formas 1 y 2 que te puse arriba, el SWF sólo muestra la escena 1 del SWF.
Te aseguro de que esto es lo que ocurre pues me fijo en el código fuente de la página que se carga para confirmarlo.

Tengo que asegurarme de que ande con cualquier navegador.

¿Qué puede estar faltándole para que funcione con los otros navegadores?

Vaya qué trabajo da todo esto!!!!!

Sigo tratando pero ya se me acaban las formas de probar esto
Cuando puedas si tienes un rato, realmente tu ayuda es muy valiosa

Muchas gracias!!!!!!!!!!
GusSiblo21
  #10 (permalink)  
Antiguo 19/03/2012, 23:09
 
Fecha de Ingreso: octubre-2010
Mensajes: 107
Antigüedad: 14 años, 1 mes
Puntos: 14
Respuesta: Cómo pasar una variable Javascript a variable HTML en el BODY a usarse con

Hola,

Talvez el problema esta en que los parametros toman su valor cuando ya esta cargada la pagina, o sea que el swf no alcanza a tomarlos.

Ahora mismo estoy un poco ocupado, pero mañana(practicamente mas tarde) te escribo algo de codigo para que pruebes.
  #11 (permalink)  
Antiguo 19/03/2012, 23:38
 
Fecha de Ingreso: marzo-2012
Mensajes: 10
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: Cómo pasar una variable Javascript a variable HTML en el BODY a usarse con

Cita:
Iniciado por MARCASTELEON Ver Mensaje
Hola,

Talvez el problema esta en que los parametros toman su valor cuando ya esta cargada la pagina, o sea que el swf no alcanza a tomarlos.

Ahora mismo estoy un poco ocupado, pero mañana(practicamente mas tarde) te escribo algo de codigo para que pruebes.
===========================

OK MARCASTELEON

Cuando puedas, haz lo tuyo tranquilo y desde ya muchas gracias

GusSiglo21
  #12 (permalink)  
Antiguo 20/03/2012, 20:35
 
Fecha de Ingreso: octubre-2010
Mensajes: 107
Antigüedad: 14 años, 1 mes
Puntos: 14
Respuesta: Cómo pasar una variable Javascript a variable HTML en el BODY a usarse con

Hola,

He estado consultando y tengo algunas posibles soluciones. Prueba cambiando "window.onload=showfile" (la primer linea del script que se ha estado tratando) por:

Código Javascript:
Ver original
  1. window.addEventListener("DOMContentLoaded",showfile,false);


ó por

Código Javascript:
Ver original
  1. document.addEventListener("DOMContentLoaded",showfile,false);
  #13 (permalink)  
Antiguo 21/03/2012, 08:01
 
Fecha de Ingreso: marzo-2012
Mensajes: 10
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: Cómo pasar una variable Javascript a variable HTML en el BODY a usarse con

Cita:
Iniciado por MARCASTELEON Ver Mensaje
Hola,

He estado consultando y tengo algunas posibles soluciones. Prueba cambiando "window.onload=showfile" (la primer linea del script que se ha estado tratando) por:

Código Javascript:
Ver original
  1. window.addEventListener("DOMContentLoaded",showfile,false);


ó por

Código Javascript:
Ver original
  1. document.addEventListener("DOMContentLoaded",showfile,false);
=================================

HOLA MARCASTELEON

Bueno, intentaré hoy a la noche probar esta solución que me acercaste. Luego te comentaré a ver qué sucedió.
Mil gracias!
Saludos
GusSiglo21

Etiquetas: body, html, input, swf, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:12.