Comment dire en Javascript if "le lien n'existe pas" ?

Résolu
Bonjour,

Je suis bloqué en javascript, je souhaite mettre un
if (url doesnt exist){
        location.replace("http://AutrePage.html");}

Pour expliquer avec un peu plus de details, j'ai un input sur ma page, et un bouton OK. Quand je rentre un article dans mon input (exemple : g6584) ça m'ouvre la page de l'article http://...g6584.html
Le but ici c'est : si l'article entré n'existe pas (parce que je n'ai pas encore créé la page de cet article) --> afficher une autre page à la place (une page ou j'explique que l'article n'existe pas encore).

Je ne souhaite pas utiliser de .htaccess car mon site est offline donc pas de php

2 réponses

  1. Modérateur
    Bonjour
    Tu pourrais faire un appel Ajax sur cette page pour voir si elle répond.
    Ou éventuellement, utiliser la librairie fetch de JavaScript.
    0
    1. Je ne connais ni l'un ni l'autre :)

      il n'y a pas tout simplement une ligne de javascript qui peut faire ce que je veux ?
      du type :
      var url = 'C:/Users/xxx/Documents/xxx/articles/' + document.getElementById('reference').value + '.html';
      if (url == null){
        location.replace('C:/Users/xxx/Documents/xxx/articles/'404.html');}


      ?? ou un truc du genre parce que == null ça ne fonctionne pas :/
      0
    2. Modérateur
      @FogielTon url n'est pas vide ni null ... puisque tu la fais débuter par : 'C:/Users/xxx/Documents/xxx/articles/'
      et une chaine n'est jamais null ...
      Donc normal que ça ne marche pas.
      Si tu veux t'assurer que ton url existe ( et donc permet d'afficher ta page) .. la seule solution c'est celle que je t'ai indiqué.
      Ou alors, utiliser un langage serveur ( comme du php par exemple ..) et là, oui, tu auras une instruction genre if file_exists ..
      Mais voila .. en javascript .. ça passe par de l'ajax ...

      Je vais être sympa .. je vais te donner le code qui correspond ( et que j'ai trouvé en 3 secondes sur google..)
      function file_exists(filename) {
          fetch(filename).then(function(response) {
              if (!response.ok) { throw Error(); }
              return response;
          }).then(function(response) {
                  console.log("true");
                  return true;
          }).catch(function(error) {
                  console.log("false");
                  return false;
          });
      }
      


      ce qui devrait te permettre de faire un truc du genre
      if(file_exists(url)){
        location.replace('./articles/'404.html');
      }
      


      NB: Evite de mettre le chemin en absolu à partir de ton disque C: .. sinon tu risques d'avoir des soucis le jours où tu voudras utiliser tes pages sur un autre ordi ..
      A la place, utilises le chemin relatif.
      (si tu ne sais pas ce que c'est .. je t'invite avant de poursuivre ton dev de te former la dessus ! )
      1
  2. Merci beaucoup, oui je vais me renseigner à ce sujet, j'aime bien savoir comment ça fonctionne ! :p
    0