Buenos días. Necesito saber si el archivo que indico en la ruta que guardo en la variable de texto "t" como la variable de diapositiva "s" existe, para poder mostrarlos o no a través de la vista. Necesito hacer esto solo con java script y archivos locales, sin lado del servidor. Si es posible, estaría muy agradecido de recibir su ayuda.
Mi código actual en JavaScript:
function loadFiles(num) { let s = 'assets/content/Compiladores/Slides/' + num + '.jpg'; let t = 'assets/content/Compiladores/Texts/' + num + '.txt'; document.slider.src = s; $("#description").load(t); $("#num").text(num); }Nunca podrá determinar de manera confiable si existe un recurso antes de hacer algo con él.
Tenga en cuenta que esto es cierto incluso en un programa que se ejecuta directamente en la máquina de un usuario o en un servidor . Normalmente no menciono las respuestas de otras personas en la mía, pero la que recomienda que haga esa verificación (que según el enlace es problemática incluso en las mejores circunstancias) pero a través de una brecha entre el cliente y el servidor es una locura. Piense en todas las cosas que pueden salir mal:
Y así.
¡Sin mencionar que para el camino feliz implica un viaje de ida y vuelta adicional completamente innecesario al servidor antes de comenzar a mostrarles lo que quería mostrarles en primer lugar!
La forma correcta de hacer esto es intentar cargar el recurso y luego manejar el error si falla:
function loadFiles(num) { let s = 'assets/content/Compiladores/Slides/' + num + '.jpg'; let t = 'assets/content/Compiladores/Texts/' + num + '.txt'; document.slider.onerror = function () { // deal with the resource not loading here } document.slider.src = s; const desc = $("#description"); desc.on("error" function () { // deal with the resource not loading here }); desc.load(t); $("#num").text(num); }intente esto para el archivo existe o no
function UrlExists(url) { var http = new XMLHttpRequest(); http.open('HEAD', url, false); http.send(); return http.status!=404; } function UrlExists(url) { var http = new XMLHttpRequest(); http.open('HEAD', url, false); http.send(); return http.status!=404; } function loadFiles(num) { let s = 'assets/content/Compiladores/Slides/' + num + '.jpg'; let t = 'assets/content/Compiladores/Texts/' + num + '.txt'; document.slider.src = s; if(UrlExists(s)){ $("#description").load(t); } if(UrlExists(t)){ $("#num").text(num); } }