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 :

Script fonctionne mal sous I.E.


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Graphiste
    Inscrit en
    Mai 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Graphiste

    Informations forums :
    Inscription : Mai 2014
    Messages : 3
    Par défaut Script fonctionne mal sous I.E.
    Bonjour,

    J'ai un petite fonction de retour sur un bouton avec condition (voir code ci-dessous) qui marche parfaitement sauf sous Internet Explorer. La fonction s'effectue mais seulement sur la première partie, comme si on venait toujours de l'extérieur du site. Quelqu'un peut-il m'expliquer d'où vient le problème et s'il existe une alternative.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function retour(){
        var Chaine = window.document.referrer;
        var Sous_Chaine_2 = 'monsite.com';
        if (Chaine.indexOf(Sous_Chaine_2) == -1){
            window.location.href="monsite.com"+ "complement-d-url";
        }else{
           history.go(-1);
        }
    };

    Merci déjà pour votre aide.

  2. #2
    Candidat au Club
    Homme Profil pro
    Graphiste
    Inscrit en
    Mai 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Graphiste

    Informations forums :
    Inscription : Mai 2014
    Messages : 3
    Par défaut
    À priori c'est la propriété referrer qui semble buger sur IE, quelqu'un à t'il autre chose à proposer pour un résultat équivalent.
    Merci.

  3. #3
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Par défaut
    Citation Envoyé par chrisabsy Voir le message
    À priori c'est la propriété referrer qui semble buger sur IE
    Ça m’étonne, mais tu as peut-être raison. En gros ce que tu essayes de faire c'est :

    1. Obtenir l'adresse de la page précédemment visitée
    2. Tester si elle contient "monsite.com"
    3. Si non, envoyer le visiteur sur monsite.com/complement-d-url
    4. Si oui, reculer d'une page dans l'historique


    Il y a quelques pièges à utiliser le referrer, en particulier parce que c'est une donnée facile à falisifier (voir les nombreuses extensions de Firefox proposant de faire ça). J'ai constaté que peu de site aujourd'hui ont légitimement besoin du referrer (légitimement selon moi, c'est à dire pas à des fins de pistage ou de publicité). Et les sites qui l'utilisent sont souvent de conception assez vieille. Utiliser le referrer c'est faire un pari sur l'honnêteté du visiteur. Il y a une dizaine d'années on concevait les sites comme ça, mais je pense (opinion qui n'engage que moi) que la sécurité sur le Web était prise à la légère.

    Aujourd'hui on préfère se baser sur des sessions de navigation avec un identifiant de session (sessid) transmis par cookie, si possible par HTTPS. Grâce aux sessions, tu conserves côté serveur les données de session de ton visiteur. Notamment, tu peux décider de conserver son historique de navigation pendant sa session. Ainsi tu sais quelle était la « page précédente » et tu peux le renvoyer dessus. Par contre, tu ne peux pas savoir sur quel site il était avant de venir sur le tien. Mais ça, c'est une information qui touche à sa vie privée. Tu ne peux pas développer ton serveur en te basant sur une information que le visiteur n'est pas obligé de te donner.




    Avec history.go, tu peux avoir quelques problèmes aussi. Pas pour des raisons de sécurité cette fois, mais plutôt pour des raisons de cohérence. Tous les navigateurs n'ont pas la même façon de restituer une page de l'historique :
    • certains utilisent le cache, d'autres refont une requête au serveur ;
    • certains redéclenchent l'évènement onload, d'autres pas ;
    • etc.

    HTML5 propose une API pour manipuler l'historique, mais je ne suis pas assez familier avec pour pouvoir t'en parler. (Et il semblerait qu'il y ait aussi des problèmes de compatibilité.)

    Ce que je te suggère, c'est simplement de laisser tomber history, car ce n'est pas quelque chose de vital pour ton site (à mon humble avis). Disons que si tu comptes vraiment dessus, il faut ajouter du code pour corriger les problèmes de compatibilité, et le résultat ne vaut pas l'effort Si tu utilises les sessions, tu pourras sans problèmes obtenir le même comportement, mais cette fois contrôlé depuis ton serveur.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  4. #4
    Candidat au Club
    Homme Profil pro
    Graphiste
    Inscrit en
    Mai 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Graphiste

    Informations forums :
    Inscription : Mai 2014
    Messages : 3
    Par défaut
    Un grand merci pour ta réponse Watilin, même si j'avoue être complétement dépassé par celle-ci ;-)
    Je vais étudier cette piste.

  5. #5
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Par défaut
    Je vais essayer de détailler mon histoire de sessions tout en restant simple

    Pour stocker des informations de session en PHP par exemple, il faut utiliser la fonction session_start(). Peut-être que tu connais déjà. Cette fonction fait plusieurs choses sous le capot : vérifier qu'un cookie de session est présent, en créer un si besoin, et récupérer les informations associées à ce cookie, informations qui sont stockées côté serveur comme je te l'ai dit. Dans le script PHP, elles sont accessibles via la variable globale $_SESSION. Tu peux y stocker à peu près n'importe quoi. Pour y stocker l'historique de l'utilisateur, tu peux par exemple utiliser un tableau. Imagine que toutes les pages PHP de ton site commencent par ce bout de code :

    Code PHP : 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
    <?php
    session_start();
     
    // initialise le tableau s'il n'existe pas
    if (!isset($_SESSION['historique'])) {
       $_SESSION['historique'] = array();
    }
     
    // ajoute l'adresse actuelle
    $_SESSION['historique'][] = $_SERVER['REQUEST_URI'];
     
    // affiche le tableau
    echo '<p>Historique de navigation pour cette session :</p>';
    echo '<pre>';
    print_r($_SESSION['historique']);
    echo '</pre>';
     
    ?>

    Tu verras s'agrandir l'historique au fur et à mesure que tu navigues sur le site. Et avec Firebug (ou une autre console) tu peux vérifier que l'information n'est pas dans les cookies : il y a seulement un cookie PHPSESSID qui contient l'identifiant de la session (dans certains cas, cet identifiant est visible dans l'URL).
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  6. #6
    Inactif  
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 374
    Par défaut
    Bonjour.

    - Vous devriez en 1er tester window.document.referrer : En principe il contient quelquechose qd on vient par un LIEN d'un site. En revanche, il sera VIDE si on vient d'un favori (Bookmark) ou si on a tapé à la main dans la barre d'url...
    - Attention, j'ai bien précisé en principe ! Grosso-modo cela dépend des serveurs...
    - On peut imaginer qu'il puisse contenir n'importe quoi !

    - Pour ce que voulez faire, si le referrer est vide OU contient autre chose que 'monsite.com' : alors history.go(-1). Ce qui est différent de ce que vous avez écrit...

    - Par ailleurs, concernant votre code :
    - Votre variable 'Sous_Chaine_2' est inutile, placez la chaine correspondante directement dans la methode indexOf.
    - Attention la methode IndexOf est sensible à la casse !
    - Dans un "if else" pas besoin d'accolade quand il n'y a qu'une seule instruction.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function retour()
         {
    var Chaine = window.document.referrer ;
     
    if ( Chaine.length == 0 || Chaine.indexOf('monsite.com') == -1 )
         history.go(-1) ;
    else
         window.location.href="monsite.com" + "complement-d-url" ;
         }

Discussions similaires

  1. Mon site fonctionne mal sous IE
    Par maitrecortex dans le forum Balisage (X)HTML et validation W3C
    Réponses: 0
    Dernier message: 09/04/2009, 14h24
  2. script fonctionne pas sous IE
    Par Alexdezark dans le forum Général JavaScript
    Réponses: 29
    Dernier message: 12/11/2008, 20h20
  3. Réponses: 2
    Dernier message: 23/04/2006, 21h02
  4. script fonctionnant sous IE pas sous FF
    Par thibotus01 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 25/03/2006, 18h07
  5. Script ne fonctionne pas sous IE
    Par Stessy dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 29/09/2005, 13h44

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