Crear variables o funciones globales a todos los frames

  • Por
Hacemos que una variable o una función sea accesible desde cualquier página de un sitio web hecho con frames.
Al poder acceder a funciones y variables de otros frames se nos ocurre una utilidad que puede ser interesante. Consiste en crear variables y funciones globales a todo un sistema de frames que además tendrían como peculiaridad que se podrían recordar durante toda la vida del frame y desde distintas páginas.

Es decir, podemos conseguir que una variable tenga validez en varias páginas distintas y que conserve el valor al pasar de una página a otra. Así, cuando se accede a una página, podríamos incluir un valor y accederlo desde cualquier otra página del web. Es algo así como el paso de variables de una página a otra de la programación de servidor, pero realizado con el cliente y con la ayuda de un frame.

Nota: El tema de pasar variables de una página a otra es interesante para usuarios bastante avanzados. Si llegamos a aprender a hacer páginas web complicadas veremos como más tarde o temprano nos veremos en necesidad de que las páginas de nuestro sitio web se pasen o envíen variables con sus correspondientes valores. Esto es algo que hacen muy fácil los lenguajes de programación de servidor como ASP o PHP, pero que en lenguajes del lado del cliente como Javascript no es posible o bien hay que inventarse algún mecanismo de cosecha propia para conseguirlo.

Para crear variables que tengan validez en todas las páginas que se muestren en una estructura de frames debemos declararlas en el archivo HTML que contiene la declaración de frames (donde están las etiquetas <frameset> y similares).

Asimismo, si queremos declarar funciones a las que también poder llamar desde cualquier página del frame, deberíamos declararlas en la declaración de frames.

En esta declaración de frames, que utilizaremos luego en un ejemplo de esta técnica, declara una variable, en este caso de tipo array, y una función. No tiene mucho sentido en principio declarar estas estructuras en una declaración de frames, pues no las vamos a poder utilizar, salvo que las accedamos desde otros frames del sitio web.

<html>
<head>
<title>Ejemplos de control de frames</title>
<script language="JavaScript">
var respuestas = new Array(3)

function extraeValor(){
    for (i=0;i<window.frames[1].document.f1.respuesta.length;i++){
    if (window.frames[1].document.f1.respuesta[i].checked)
       return window.frames[1].document.f1.respuesta[i].value
    }
    return 0
}

</script>
</head>
<frameset rows="60,*">
    <frame src="frames1.html" name="frame0" marginwidth="10" marginheight="10">
    <frame src="pregunta1.html" name="frame1" marginwidth="10" marginheight="10">
</frameset>
</html>


Veremos a continuación un ejemplo con este código que sirve para mostrar el uso de variables globales a todo un frame.