Validar una URL

¿Como puedo validar la existencia de una URL antes de hacer miVentana=window.open(...)? O bien tras abrirla, ¿como valido miVentana?
1

1 Respuesta

20.900 pts.
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...');
Espero que esto te sea útil, aunque sé que puede que no...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas