Javascript para el código URL

Quiero hacer en mi web un formulario para que los que lo visiten intruduzcan una dirección de una web -por ejemplo www.arrakis.es/~corcus- y que dando al botón ACEPTAR esta dirección sea recogida en otro archivo (ejemplo.htm) con el siguiente código HTML:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta http-equiv="Refresh" content="10; URL=NOMBRE DE LA WEB">
<title></title>
</head>
<body>
</body>
</html>
</body>
</html>
Donde NOMBRE DE LA WEB=www.arrakis.es/~corcus (valor que introduzcas en el formulario).
¿Hay alguna manera de programar en Javascript para conseguir esto? Y en caso afirmativo ¿qué código tendría que introducir en los archivos *.htm?
Respuesta
1
Lo que tu propones no es más que abrir una ventana con una dirección determinada el proceso el muy fácil.
<!-- COPIA ESTE CODIGO -->
<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title> Redireccionamiento </title>
<script language="JavaScript">
<!--
// Codigo creado por xelenco2 para una consulta de www.Todoexpertos.es
function abrirURL(direccion){
if ((direccion != "") && (direccion != "http://www.")) {
myWindow = window.open(direccion, "Redireccionamiento", 'toolbar, width=450, height=500')
}
else{
alert ("Escribe tu direccion: ejemplo http://www.yahoo.es");
}
}// fin funcion abriURL
//-->
</script>
</head>
<body>
<h3>Escribe tu direccion: ejemplo http://www.yahoo.es</h3>
<form>
<!-- Texto para la direccion URL -->
<input name="direccion" value="http://www.">
<!-- Boton que al pincharse llama a la funcion declarada en el javaScript
abrirURL, que recibe un argumento que es el que contiene la caja de texto -->
<input type="button" value="Redireccionamiento" onclick="abrirURL(document.forms[0].elements[0].value)">
</form>
</body>
</html>
<!-- HASTA AQUI -->
Si lo pruebas veras que es muy sencillo.
Si quieres saber algo más o esto te da algún fallo te contestare enseguida un saludo

1 respuesta más de otro experto

Respuesta
1
En Javascript no es posible grabar archivos en cliente (por motivos de seguridad) ni en servidor (porque es un lenguaje de cliente). Para hacer lo primero necesitarías usar un control ActiveX firmado (y sólo funcionaría con el JScript de Internet Explorer), y para lo segundo cualquier lenguaje de servidor (ASP, PHP) te valen.
Ahora bien... ¿Qué quieres hacer con ese archivo? Por lo que veo, quieres generar una página vacía que se autorrefresque al URL que introduzca el usuario... Igual no necesitas grabarla en un archivo; tal vez te baste con generar el HTML y escribirlo a una ventana nueva, o a un frame... Si me das detalles de lo que quieres hacer, tal vez pueda ayudarte más.
Lo dicho, no dejes de darme más información. Tal vez lo que quieres hacer pueda realizarse sin tener que acudir al servidor...
Vamos a ver si explico claramente lo que quiero hacer,
He creado estos 3 archivos:
1.htm:
<html><head>
<meta http-equiv="Refresh" content="35; URL=frame.htm">
</head>
<body></body></html>
2.htm:
<html><head>
<meta http-equiv="Refresh" content="1; URL=ARCHIVO">
</head><body></body></html>
frame.htm:
<HTML>
<HEAD>
<FRAMESET ROWS="67,*">
<FRAME SRC="1.htm" NAME="v1">
<FRAMESET COLS="90,*">
<FRAME SRC="1.htm" NAME="v2">
<FRAME SRC="2.htm" NAME="v3">
</FRAMESET>
</FRAMESET>
</HEAD><BODY></BODY></HTML>
La URL apunta a archivos en el servidor FILEPOOL y lo que pretendo es, sin crear varias frames para cada archivo que se tenga que bajar, hacer posible que el usuario de la web introduzca el enlace que apunta a un archivo de FILEPOOL y ejecutar el archivo FRAME.HTM.
Aprovecho la ocasión para preguntar también cómo salir de la recursividad que se produce al ejecutar FRAME.HTM
P.D. El servidor FIELPOOL falla bastante y por eso he creado estos archivos para que insista constantemente con el bucle hasta que dé con el archivo -de ahí que me interese que haya el menor número de ventanas posibles, porque los errores son muchos cada vez que quiere localizar el archivo hasta que da con él.
He estado estudiando tu problema, y he llegado a la conclusión de que no puede resolverse desde el lado del cliente con Javascript de una forma satisfactoria. Te explicaré detenidamente las razones:
En primer lugar, no es posible referenciar el contenido de un tag META desde Javascript, así que no puedes sustituir "ARCHIVO" por una URL cualquiera.
Sería posible hacer las cargas de los frames, en lugar de mediante el META, mediante Javascript con la propiedad location. Href: así, si estás en un frame llamado f1 y quieres recargar el frame f2 (de su mismo FRAMESET) con una URL cualquiera, harías:
parent.f2.location.href='http:\/\/www.todoexpertos.com';
Con lo que cargarías la página de Todoexpertos.com en el frame f2. Ahora bien, el problema es que dices que hay que reintentar debido a que el servidor del que quieres recuperar ficheros no es fiable. ¿Cuántos reintentos? Haciéndolo como lo intentabas, el proceso es infinito (no se detendrá nunca, si no pulsas STOP). Con Javascript puedes programar los reintentos que quieras, pero en el momento en el que cargue algo del servidor *habrás perdido el control del frame*. No es posible manipular desde un frame otro que contiene una página de un dominio diferente, por motivos de seguridad. Y esto es así aunque el servidor correspondiente te haya mandado un error 404, o algo parecido. Lo que es más, un reintento adicional cuando ya se haya cargado algún contenido del servidor provocará un error de Javascript ("Acceso denegado"), que sólo se puede capturar en Explorer 5.x y en Netscape 6.x (con un bloque try ... catch en el código).
En resumen, te recomiendo que estudies la posibilidad de trabajar desde servidor (a menos que puedas poner tu script en el mismo dominio que FILEPOOL, lo que no parece ser el caso). Lamento no poder ayudarte más.
Con respecto a la recursividad: es inevitable si tienes un FRAMESET dentro de otro con recargas automáticas, debido a que no puedes fijar un TARGET en la recarga del META, igual que como lo harías en un enlace normal cuando quieres dirigir la nueva página a un frame distinto.
Espero haberte sido de alguna ayuda. Por favor, no dudes en preguntarme cualquier otra cosa que te surja.
Hola, ante todo agradecerte el tiempo que has dedicado a resolver el problema y la rapidez en las respuestas. La clave para la inspiración que he tenido ha sido la sugerencia que me has hecho de redirigir en javascript. Así que he utilizado las dos cosas (redirección con URL y Javescript) y al menos he evitado la recursividad.
Gracias.
Mi web: www.arrakis.es/~corcus

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas