Escribí este código para verificar si existe un archivo y, si existe, hacer una cosa y, si no, hacer otra creando una variable.
<head> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> <script> $(document).ready(function(){ $("#myInput").keyup(function(event){ var keycode = (event.keyCode ? event.keyCode : event.which); if(keycode == '13'){ var exists = false; var filename = "folder/document.html"; $.get(filename, function() { //This code only runs if a certain file exists exists = true; alert('should be displayed first'); }); if(exists == true) { alert('This file exists!'); } else { alert('This file does not exist!'); } } }); }); </script> </head> <body> <span id="myInput" role="textbox" contenteditable></span> </body>El problema es que, por alguna razón, $.get se ejecuta después de todo lo demás, sin importar lo que haga. ¿Por qué sucede esto y cómo lo soluciono? Estoy bien con un método totalmente nuevo para verificar si existe un archivo, pero esto es lo mejor que pude encontrar. $.get lanza un error 404 si no encuentra un archivo, lo que significa que el código dentro de él solo se ejecuta si encuentra un archivo, razón por la cual establecí una variable dentro de allí y confié en la declaración if en la variable.
PD: el código solo funciona si está subido a Internet, no como un archivo en una computadora, lo cual es realmente molesto.
Actualización: lo acabo de descubrir y funciona ahora. Muchas gracias. Aquí está el código que estoy usando ahora de otra pregunta que no funcionó cuando lo probé antes, pero todo está bien ahora:
<head> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> <script> $(document).ready(function(){ $("#myInput").keyup(function(event){ var keycode = (event.keyCode ? event.keyCode : event.which); if(keycode == '13'){ var exists = false; var filename = "folder/document.html"; $.get(filename) .done(function() { alert('File exists!'); }).fail(function() { alert('File does not exist') }); } }); }); </script> </head> <body> <span id="myInput" role="textbox" contenteditable></span> </body>