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 :

Autoriser un seul clic sur une page ?


Sujet :

JavaScript

  1. #21
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 886
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 886
    Points : 3 725
    Points
    3 725
    Par défaut
    J'ai fait un test ici : http://jsbin.com/bimujebuni/edit?html,output ou plus court : http://jsbin.com/xureracuve/edit?html,output

    On voit que seul le premier click passe : quand on clique la première fois sur un bouton on lance la fonction clickB(event) ensuite on remonte jusqu'au body et la fonction clickfunc(event) est alors exécutée. Or cette fonction annule l’événement onclick de tous les éléments de la page donc après tous les click sont ignorés...

    Je ne sais pas si ça marchera dans ton cas mais tu peux essayer comme ceci :

    1- repère la balise <body> et ajoute : onclick="clickfunc(event)" pour obtenir : <body onclick="clickfunc(event)">.

    2- repère la balise </body> et ajoute le script juste avant pour obtenir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <body onclick="clickfunc(event)">
    ...
    ...
    ...
        <script>
          function clickfunc(event) {
            var allObj = document.querySelectorAll("*");
            for (var i = 0; i < allObj.length; i++) 
              allObj[i].onclick = null ;
          }
        </script>
    </body>

  2. #22
    Membre à l'essai
    Homme Profil pro
    Ouvrier
    Inscrit en
    Juin 2017
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ouvrier
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2017
    Messages : 91
    Points : 17
    Points
    17
    Par défaut
    Bonjour Beginner. !

    MErci beaucoup je vais tester çà et je te tiens au courant !

    Si j'ai déjà des scripts dans la page je peux rajouter le tiens avec les balises <script></script> ?

  3. #23
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 886
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 886
    Points : 3 725
    Points
    3 725
    Par défaut
    Citation Envoyé par vlx360 Voir le message
    Si j'ai déjà des scripts dans la page je peux rajouter le tiens avec les balises <script></script> ?
    Je pense que oui mais met le en dernier, juste avant la balise </body>...

  4. #24
    Membre à l'essai
    Homme Profil pro
    Ouvrier
    Inscrit en
    Juin 2017
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ouvrier
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2017
    Messages : 91
    Points : 17
    Points
    17
    Par défaut
    Hello,

    Malheureusement çà ne fonctionne pas, peut-être est-ce du aux balises script ?

    si je clique j'ai une fenêtre qui dit : erreur de script à la ligne tant "l'objet ne gère pas la propriété ou la méthode query Selector All

  5. #25
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 886
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 886
    Points : 3 725
    Points
    3 725
    Par défaut
    Hélas ça peut être à cause de plein de chose, difficile de savoir sans pouvoir examiner le code source...

    Il faudrait un exemple au moins, peut-être que tu pourrais en faire un similaire du point de vu de la structure mais qui ne contienne aucune données personnelles/privées ?

  6. #26
    Membre à l'essai
    Homme Profil pro
    Ouvrier
    Inscrit en
    Juin 2017
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ouvrier
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2017
    Messages : 91
    Points : 17
    Points
    17
    Par défaut
    si je clique j'ai une fenêtre qui dit : erreur de script à la ligne tant "l'objet ne gère pas la propriété ou la méthode query Selector All

    Voici le code :

    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    <!DOCTYPE html>
    <html>
    <head>
    <title>Lancement-Macro</title>
    <script type="text/JavaScript">
    var myArray = ['Macro-001.mcr', 'Macro-002.mcr'];
    function lance(Numero_Macro) {
    var wScript = new ActiveXObject("Wscript.Shell");
    var myMacro = wScript.CurrentDirectory + "\\" + myArray[Numero_Macro];
    wScript.run(myMacro);
    return false;
    }
    <!-- Disable 
    function disableselect(e){ 
    return false 
    } 
     
    function reEnable(){ 
    return true 
    } 
     
    //if IE4+ 
    document.onselectstart=new Function ("return false") 
    document.oncontextmenu=new Function ("return false") 
    //if NS6 
    if (window.sidebar){ 
    document.onmousedown=disableselect 
    document.onclick=reEnable 
    } 
    //--> 
    </script>
    <meta charset="utf-8">
    <style type="text/css">
    body {
    	background-color: #000;
    	overflow: hidden;
    	background-image: url();
    	background-repeat: no-repeat;
    }
    img {
    border: none;
    }
    body,td,th {
    	color: #FFF;
    }
    </style>
    </head>
    <body onclick="clickfunc(event)">
    <p>
      <hta:application border="none" singleinstance="none" windowstate="maximize" scroll="no" caption="no" innerborder="no"></hta:application>
    </p>
    <tr>
      <td width="45">&nbsp;</td>
      <td width="237"><a href="" onClick="lance(0);return false;"><img src="eg.v.png" width="41" height="33" onMouseOver="this.src='es.v.png'" onMouseOut="this.src='eg.v.png'" /></a></td>
      <td width="125"><p><a href="" onClick="lance(1);return false;"><img src="er.v.png" width="41" height="33" onMouseOver="this.src='es.v.png'" onMouseOut="this.src='er.v.png'" /></a></p>
      <p>&nbsp;</p></td>
     
    <script>
          function clickfunc(event) {
            var allObj = document.querySelectorAll("*");
            for (var i = 0; i < allObj.length; i++) 
              allObj[i].onclick = null ;
          }
        </script>
    </body>
    </html>

  7. #27
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 886
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 886
    Points : 3 725
    Points
    3 725
    Par défaut
    Ah oui peut-être que ça passe pas avec IE je vais regarder mais là avec le code on comprend mieux et je vois qu'il y une fonction qui lance les macro, c'est drôle car j'avais aussi appellé le code de NoSmoking comme cela...

    Du coup c'est cette fonction qu'il faudrait modifier pour rajouter le code de NoSmoking...

    Je reviens...

  8. #28
    Membre à l'essai
    Homme Profil pro
    Ouvrier
    Inscrit en
    Juin 2017
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ouvrier
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2017
    Messages : 91
    Points : 17
    Points
    17
    Par défaut
    Si tu le dis Beginner lol !

  9. #29
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 886
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 886
    Points : 3 725
    Points
    3 725
    Par défaut
    Ok donc apparemment la fonction : document.querySelectorAll("*")ne passe pas sous IE inférieur à 8 ???

    Bon repassons au plan A, remplace la première balise <script> (celle qui contient la fonction lance(Numero_Macro) par celle-ci :
    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
     
    <script type="text/JavaScript">
     
    var myArray = ['Macro-001.mcr', 'Macro-002.mcr'];
    var bmacroEncours = false;
     
    function lance(Numero_Macro) {
     
        if (bmacroEncours) return ;
        bmacroEncours = true ;
     
        var wScript = new ActiveXObject("Wscript.Shell");
        var myMacro = wScript.CurrentDirectory + "\\" + myArray[Numero_Macro];
        wScript.run(myMacro);
        return false;
    }
    <!-- Disable 
    function disableselect(e) {
        return false
    }
     
    function reEnable() {
        return true
    }
     
    //if IE4+ 
    document.onselectstart = new Function("return false")
    document.oncontextmenu = new Function("return false")
    //if NS6 
    if (window.sidebar) {
        document.onmousedown = disableselect
        document.onclick = reEnable
    }
    //-->
    </script>

  10. #30
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 886
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 886
    Points : 3 725
    Points
    3 725
    Par défaut
    Ah je suppose qu'en fait tu n'as mis qu'un morceau du script car là il n'y a que deux macro... Dans l'original j'ai cru comprendre qu'il y en avait plus c'est ça ?

    Donc en fait pour te repérer : il faut que tu ajoutes les lignes 5,9 et 10.

  11. #31
    Membre à l'essai
    Homme Profil pro
    Ouvrier
    Inscrit en
    Juin 2017
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ouvrier
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2017
    Messages : 91
    Points : 17
    Points
    17
    Par défaut
    Oui, là j'ai mis juste le code complet avec deux macros.

    Lorsque je lis ton code il est vraiment différent de l'ancien.

    Je dois rajouter les lignes que tu dis, ok, malgré tout je dois en enlever aussi, donc là c'est pas clair ce que tu me dis !

    Vois-tu ? de mon point de vue c'est pas clair du tout !

    Et si je dois juste ajouter les lignes en conservant l'ancien code, à partir de quelle ligne je dois insérer 5,9 et 10, comme je ne sais pas les intérpr&ter je pourrais aussi bien les mettre à la fin ou au début en ce qui me concerne !

    EDIT : Au temps pour moi je vois plus clair....

  12. #32
    Membre à l'essai
    Homme Profil pro
    Ouvrier
    Inscrit en
    Juin 2017
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ouvrier
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2017
    Messages : 91
    Points : 17
    Points
    17
    Par défaut
    Apparemment çà à l'air de marcher, je v ais faire un test réel en situation, je re !

  13. #33
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 886
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 886
    Points : 3 725
    Points
    3 725
    Par défaut
    Il y a juste trois lignes de plus :

    Repère ce passage : function lance(Numero_Macro) {

    Juste avant rajoute cette ligne : var bmacroEncours = false;

    Juste après ajoute ces deux lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (bmacroEncours) return ;   
    bmacroEncours = true ;
    Tu obtiens alors :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var bmacroEncours = false;
     
    function lance(Numero_Macro) {
     
        if (bmacroEncours) return ;
        bmacroEncours = true ;
    ...
    ...

  14. #34
    Membre à l'essai
    Homme Profil pro
    Ouvrier
    Inscrit en
    Juin 2017
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ouvrier
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2017
    Messages : 91
    Points : 17
    Points
    17
    Par défaut
    PARFAIT, Merci beaucoup Beginner et à Nosmoking aussi qui m'avait bien aidé pour les macros si ma mémoire est bonne !

    Merci j'vais édit mon message j'ai vu les 3 lignes mais avec le manque d'habitude pour voir le code je pensais que c'était plus difficile à discerner !

    Ca marche TIP TOP !

    Dis moi, en petites lignes comme çà tu n'aurais pas l'équivalent pour générer un son au clic ?

  15. #35
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 886
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 886
    Points : 3 725
    Points
    3 725
    Par défaut
    Ah enfin... Tant mieux si ça marche.

    Sinon oui NoSmoking avait donné le principe depuis le début et la solution est devenue évidente après que tu aies posté du code, comme quoi c'est important de poster du code...

  16. #36
    Membre à l'essai
    Homme Profil pro
    Ouvrier
    Inscrit en
    Juin 2017
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ouvrier
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2017
    Messages : 91
    Points : 17
    Points
    17
    Par défaut
    Je le saurais pour la prochaine fois, je ne sais pas comment j'aurais fais sans vous...

    On se revoit dans un an, laissez moi vos adresses en MP, "si vous voulez" et je vous enverrais un cadeau à ce moment là...

  17. #37
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 886
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 886
    Points : 3 725
    Points
    3 725
    Par défaut
    Un cadeau dans un an ? Il faut être patient...

    Non sérieusement la satisfaction d'avoir rendu service est suffisante...(c'est beau ça, non ?)

    PS : N’oublie pas de mettre le fil en résolu.

  18. #38
    Membre à l'essai
    Homme Profil pro
    Ouvrier
    Inscrit en
    Juin 2017
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ouvrier
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2017
    Messages : 91
    Points : 17
    Points
    17
    Par défaut
    Vient à point à qui sait attendre !

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [AC-2010] Simuler un clic sur une page web sur une image javascript
    Par alex en droit dans le forum VBA Access
    Réponses: 2
    Dernier message: 02/04/2012, 13h22
  2. Imprimer une seule image sur une page php
    Par isa150183 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 14/08/2011, 16h32
  3. gestion autorisation sur une page
    Par johan971 dans le forum SharePoint
    Réponses: 5
    Dernier message: 29/05/2008, 13h50
  4. Réponses: 6
    Dernier message: 24/05/2007, 10h55
  5. Détecter un clic sur une page html depuis le serveur?
    Par korntex5 dans le forum Delphi
    Réponses: 18
    Dernier message: 12/10/2006, 17h59

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