11521 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous,

J'ai écrit une fonction qui ressemble à ça:
function openreference() {
        var obj = document.getElementById("reference")
        window.open('http://equipement-gaz.fr/fr/fiche/produit-'+obj.value+'-.pdf', '_self')
        return false;}
            
            function messageErreur(){
            if(window.open == "null"){
            alert('Référence inexistante');


La première fonction récupère une référence saisie dans un champ de formulaire et l'insère dans un lien avant d'ouvrir le document pdf (les docs sont en ligne je ne passe pas par une base de données) et je voudrais afficher une fenêtre alert (c'est moche mais ici ça ira) quand la ref. n'existe pas, autrement dit quand window.open ne s'ouvre pas.
(la deuxième fonction ne fonctionne évidement pas mais c'est pour vous donner l'esprit de ce que je voudrais faire)
A votre avis comment c'est possible d'afficher le message d'alert ''Référence inexistante" dans mon cas?
Modifié par Mangadream (19 Oct 2017 - 09:20)
Modérateur
Salut,

Je ne sais pas si on peut se baser sur l'ouverture ou non d'un onglet/page car même si le fichier n'existe pas je pense que la page s’ouvrira (avec une 404)...

Tu peux par contre vérifier si l'url du fichier renvoie une 404 ou pas et selon le résultat tu ouvre l'onglet ou tu affiche l'alert.
Idée venue de : https://stackoverflow.com/questions/3646914/how-do-i-check-if-file-exists-in-jquery-or-javascript

Si on adapte un peu ca pourrait donner un truc du genre :


function openreference() {
        var obj = document.getElementById("reference")
        var http = new XMLHttpRequest();
        http.open('HEAD', 'http://equipement-gaz.fr/fr/fiche/produit-'+obj.value+'-.pdf', false);
        http.send();
        if ( http.status != 404 ) {
                window.open('http://equipement-gaz.fr/fr/fiche/produit-'+obj.value+'-.pdf', '_self');
        } else {
                alert('Référence inexistante');
        }
}


J'ai pas creusé plus loin, faudrait vérifier que ca marche et les statuts retournés et peut être se baser sur un statut qui dit qu'il existe plutôt que sur un 404 (car il y a plein d'autres erreurs possibles).
C'est une piste quoi...
Bon courage !