IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Detecter la disponibilté d'une page web.


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 117
    Points : 67
    Points
    67
    Par défaut Detecter la disponibilté d'une page web.
    Bonsoir,

    Existe il un moyen en javascript (pur) de détecter de manière non bloquante si une page est disponible ?

    En gros si j'ai une page web sur un serveur qui est down, j'aimerais savoir (plus rapidement qu'en attendant le timeout) que la page est down.

    J'ai pensé au requêtes head mais ça reste le même problème il attends la fin du timeout pour me dire que la page n'existe pas.

    J'ai rien trouvé de très concluant sur internet à a ce sujet :/
    Merci d'avance.
    Cordialement.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 117
    Points : 67
    Points
    67
    Par défaut
    Petite précision :
    J'ai en fait trouvé quelque chose , l'idée est d'afficher la page à tester en tant qu'image de voir avec onError si elle s'affiche bien. Si oui le serveur est up , sinon le serveur est down.

    Petit problème le code suivant m'affiche toujours le message d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.write('<img src="http://..." border="0" height="0" width="0" onError="alert(\'Down\');" />');
    De la même manière le code suivant me dit que mon serveur est jamais up (d'ou le nom de la fonction ^^):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <head>
    <script type='text/javascript'>
    function serverDown(url)
    {
    	var img = new Image();
    	img.onload = function()	{alert("up");};
    	img.onerror = function() {alert("down");};
    	img.src = url;
    }
    serverDown("http://...");
    </script></head>
    Alors la question : Dois-je m'acharner ? Est ce que le onError est la bonne voie ?

    Cdt.

  3. #3
    Membre averti Avatar de blade159
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2004
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 226
    Points : 332
    Points
    332
    Par défaut
    Bonsoir, voici une fonction vous permettant de savoir si une page existe et est disponible :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    <script>
    function testURL(url)
    {
        var xhr = null; 
     
        if(window.XMLHttpRequest) // Firefox et autres
        {
            xhr = new XMLHttpRequest(); 
        }
        else if(window.ActiveXObject) // Internet Explorer
        {  
            try 
            {
                xhr = new ActiveXObject("Msxml2.XMLHTTP");
            }
            catch (e) 
            {
                xhr = new ActiveXObject("Microsoft.XMLHTTP");
            }
        }
        else // XMLHttpRequest non supporté par le navigateur 
        { 
           alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
           xhr = false; 
        }
     
        xhr.open("HEAD", url, true);
        xhr.onreadystatechange=function() 
        {
            if(xhr.readyState == 4) 
            {
                var value;
                if (xhr.status == 200)
                { 
                     value = url + " existe...";
                }
                else 
                {
                    if(xhr.status==404) 
                        value = url + " n'existe pas";
                         else 
                        value = "Erreur, status : " + xhr.status;
                }
                alert(value);            
     
            }
        }
     
        xhr.send(null); 
        } 
     
    </script>
    Si question répondue, clique sur

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 117
    Points : 67
    Points
    67
    Par défaut
    Bonsoir !

    Merci pour votre réponse, en effet cette méthode marche aussi (uniquement en appelant une page html).
    Et en réalité les deux premières que j'ai cité fonctionnent aussi mais uniquement lorsqu'on appelle des vrai images (je m'acharnais avec un script cgi)

    Dans tous les cas, ces méthodes permettent de déterminer si apache (ou tout autre serv web) est down (entre autre).
    En effet , par exemple, si je stop apache2 sur mon serveur, instantanément je saurais à l'aide de l'onerror ou du header que la page n'est pas disponible.

    Par contre, si le serveur distant est éteint, complètement, alors quoi quelque soit les moyens utilisé, je dois systématiquement attendre le timeout du navigateur (5 sec) avant de savoir que la page n'est pas disponible.
    En y réfléchissant bien même un ping ne pourra m'informer de l’indisponibilité totale d'un serveur qu'à l'aide d'un timeout : autrement dit je ne sais pas si il existe de méthode instantanée pour détecter la dispo d'un serveur.
    Mais bon .. vu le peu de fois que ça arrive

    Donc bon problème plus ou moins résolu ! Merci pour votre aide !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [JSP][WEB] recuperer le contenu d'une page web
    Par ypikahe dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 14/03/2008, 10h10
  2. comment detecter la fermeture d'une page web
    Par Philcmoi dans le forum JSF
    Réponses: 2
    Dernier message: 15/08/2007, 18h21
  3. [VB.NET][1.1] Comment détecter le TimeOut d'une page web ?
    Par crimsonPhantom dans le forum ASP.NET
    Réponses: 1
    Dernier message: 13/01/2006, 20h01
  4. ouvrir une page Web en mode texte
    Par Halleck dans le forum Windows
    Réponses: 7
    Dernier message: 03/03/2004, 15h08
  5. Réponses: 3
    Dernier message: 28/10/2003, 14h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo