Ventanas con JavaScript

¿Como puede saber si mi miVentana=window.open(...) tiene una URL valida?, o si hay otra solución para validar la URL antes de hacer el open.

1 respuesta

Respuesta
1
Puedes controlar el formato de la cadena de texto que le pasas, como URL, a window. Open(), de forma que te asegures que "está bien formada". Desgraciadamente, de ahí a deducir que existe realmente y que corresponde a una página real va un mundo...
El problema es que si introduces una URL válida pero que corresponda a una página que no exista dentro de un servidor existente, desde el punto de vista del navegador no hay ningún error. El servidor responde normalmente, enviando una página web mediante HTTP. El problema es que esa página web dice "Error 404...", pero, a todos los efectos, es perfectamente válida y podría haber sido la página que estuviera en esa dirección. Además, no se puede "mirar el contenido" desde otra página, a ver si contiene lo de "Error 404", porque sería una página externa (bajo un dominio distinto) a la que ejecuta el script, y por tanto es "invisible" para esta por una restricción de seguridad que todas las implementaciones de Javascript incorporan: no se puede acceder a propiedades de ventanas o frames que contengan una URL de un dominio distinto al del script que se ejecuta.
Si el servidor no existe estamos en otro caso, ligeramente distinto. El navegador reportará un error de DNS, que en principio se puede capturar, mediante window. Error, en Explorer. Pero no puedes estar seguro, a priori.
Por ello, la única solución es comprobar el URL mediante una expresión regular para asegurarse de que, al menos, está bien formado, y dejar el resto en manos de la suerte... Te paso una función de validación de URLs:
function validaURLs(url) {
var re=/^http:\/\/\w+(\.\w+)*\.\w{2,3}$/;
return re.test(url);
}
La función devuelve true si el url que le pasas es de la forma 'http://(n caracteres).(N caracteres)(0 ó más veces).(2 ó 3 caracteres)', y false si no, así que puedes emplearla como:
if (validaURLs(miURL)) window.open(miURL);
else alert('La dirección no parece válida...');
Gracias por la contestación (genial tío), pero no soluciona mi problema porque va más allá ... te aclaro el problema. Necesito saber en un página WEB (desde CD) que existe un fichero particular en un directorio particular para saltar a el en dicho caso y sino seguir adelante.
Como se trata de saber de antemano cuáles son las direcciones válidas, te recomiendo lo siguiente.
El CD tendrá una lista fija de directorios/ficheros HTML. Puedes recopilarlos todos, meterlos en una cadena de texto Javascript, y utilizar el método indexOf() de String para comprobar que una determinada cadena que introduzcas está dentro de la cadena con todos los ficheros. Después (una vez comprobado), puedes asignar la cadena al location. Href de la página actual para hacer una redirección normal.
Una sugerencia. Es un "peñazo" tener una cadena gigante en el código fuente de una página, así que defínela en un archivo .js, que importarás donde la necesites con:
<script language="Javascript" src="listaArchivos.js"></script> (debe ser el primer script de la página).
Si necesitas un ejemplo práctico, pregúntame de nuevo;

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas