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 :

fonction "Onchange" - problème de compatibilité selon le navigateur


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    retraité
    Inscrit en
    Février 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : retraité
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2015
    Messages : 14
    Par défaut fonction "Onchange" - problème de compatibilité selon le navigateur
    bonjour,
    dans une page html, j'utilise la fonction "onchange" dans un formulaire pour appeler une autre page html.
    Selon le navigateur utilisé, le résultat est correct ou non :
    - Chrome :ok
    - Firefox: non
    IE : ok si j'autorise le contenu bloqué
    Edge : ok si je débloque les fenêtres contextuelles
    Opera : ok
    sur iPad : ok avec Google, non avec Safari

    Code:
    Code html : 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
    <!DOCTYPE HTML>
    <html>
    <head>
    <title> -- </title>
     
    <script language="javascript">
    function myChangeHandler()
    {
    window.open(this.options[this.selectedIndex].value);
    this.form.submit();
    }
    </script>
    </head>
     
    <body>
    <form id="myform1" >
    <select onchange="myChangeHandler.apply(this)">
    <option value=""> </option>
    <OPTION VALUE="../albums/2012-03-18--10 ans Association/index.html">2012-03-18--10 ans Association</OPTION>
    <OPTION VALUE="../albums/2009-06-19--AG/index.html">2009-06-19--AG</OPTION>
    </SELECT>
    </FORM>
    </body>
     
    </html>

    Merci de votre aide

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    1) ici c'est java pas javascript
    2) window.open peut être bloqué par le bloqueur de popup, il faut autoriser les popup.
    3) tu dois tester la variable de retour
    Citation Envoyé par MDN
    Comment savoir si ma fenêtre a été bloquée par un bloqueur de popups ?
    Avec les bloqueurs de popups intégrés dans Mozilla/Firefox et Internet Explorer 6 SP2, il est possible de vérifier la valeur renvoyée par window.open() : elle sera null si la fenêtre n'a pas été autorisée à s'ouvrir. Cependant, pour la plupart des autres bloqueurs de popups, il n'existe pas de manière fiable.
    4) window.open c'est juste une mauvaise idée depuis plus de 15 ans

    Citation Envoyé par MDN
    Évitez de recourir à window.open()
    De manière générale, il est préférable d'éviter d'utiliser window.open() pour plusieurs raisons :
    5) pourquoi faire un select qui fait des window.open en fonction de la valeur sélectionnée plutot que de faire directement une lsite de liens
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <ul>
       <li><a href="../albums/2012-03-18--10 ans Association/index.html">2012-03-18--10 ans Association</a></li>
       <li><a href="../albums/2009-06-19--AG/index.html">2009-06-19--AG</a></li>
    </ul>

  3. #3
    Membre expérimenté
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2012
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 170
    Par défaut
    Bonjour,

    Dans ta page xhtml il va falloir faire une detection d'objets et si cela echoue , détecter le navigateur.

    Bon courage

  4. #4
    Membre averti
    Homme Profil pro
    retraité
    Inscrit en
    Février 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : retraité
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2015
    Messages : 14
    Par défaut fonction "Onchange" - problème de compatibilité selon le navigateur
    merci pour les réponses. Je ne suis pas assez compétent pour modifier le code et éviter "window.open".

    il faut donc débloquer les fenêtres popup.

    C'est vrai que la solution utilisant ul/li/href est bien plus simple et évite ce problème, mais je souhaitais utiliser le formulaire avec liste déroulante.

    En fait, le code mentionné dans mon post est généré par un programme PHP. Extrait de ce 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
           <form id="myform1" >
              <select onchange="myChangeHandler.apply(this)">
              <option value=""> </option>
    <?php
    foreach ($dir as $key => $val) {
    ?>
                  <OPTION VALUE="<?php echo "../albums"; ?>/<?php echo $val; ?>/index.html"><?php echo $val; ?></OPTION>
    <?php
    }
    ?>
              </SELECT>
            <INPUT type="hidden" name="mdp" value="1" >
          </FORM>
    Je mettrais une note sur ma page pour demander aux visiteurs de débloquer les popups, sinon j'utiliserai la méthode "ul/li/href" indiquée plus haut.

    Merci encore

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    voici une solution fonctionnelle :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <form id="myform1" action="">
      <select onchange="submitBySelect(this, 'myform1');">
    ...
    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function submitBySelect( sel, form_id ){
      var myform = document.getElementById( form_id );
      if( sel.value != '' )
      {
        myform.setAttribute('action', sel.value); // on met l URL dans action
        myform.submit(); // on soumet le formulaire
      }
    }
    (un exemple ici : liste déroulante sous le titre "Discographie")

  6. #6
    Membre averti
    Homme Profil pro
    retraité
    Inscrit en
    Février 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : retraité
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2015
    Messages : 14
    Par défaut fonction "Onchange" - problème de compatibilité selon le navigateur
    Ca marche
    Merci beaucoup

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

Discussions similaires

  1. Fonction avec 3 switch ou if else selon le navigateur employé
    Par patricktoulon dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 13/02/2018, 23h44

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