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 :

simuler un clic


Sujet :

JavaScript

  1. #21
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2007
    Messages : 92
    Par défaut
    Citation Envoyé par skyser Voir le message
    Oui c'est donc la qu'il devient intéressant de simuler un clic, comme ça la fenêtre n'est pas bloqué !
    Hello,

    C'est un sujet intéressant mais un vrai casse-tête : comme l'a dit Kaamo, la gestion des pop-up est propre au paramétrage du navigateur et le pire, c'est que la façon de bloquer les pop-up peut différer selon le navigateur...

    Pourquoi ne pas ouvrir en iframe (qui n'existe plus en HTML5 sauf erreur) ou en fenêtre modale ?

    A++

  2. #22
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par wenijah
    qui n'existe plus en HTML5 sauf erreur
    Si si, ça existe toujours : iframe – nested browsing context (inline frame) - HTML5
    A ne pas confondre avec les frames
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #23
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2007
    Messages : 92
    Par défaut
    Citation Envoyé par Bovino Voir le message
    Si si, ça existe toujours : iframe – nested browsing context (inline frame) - HTML5
    A ne pas confondre avec les frames
    Oops, autant pour moi! Donc autant que skyuser utilise un iframe!

    Ou de l'AJAX ?

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    <!DOCTYPE HTML>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Document sans nom</title>
    <style type="text/css">
    #spam {
            max-height: 0;
            max-width: 0;
            overflow: hidden;
    /* on cache le pop up modal au grand public ;) cool pour les liens rémunérés, non ? */
    }
    </style>
    </head>
    <body>
    <div id="spam">
    </div>
    <script type="text/javascript">
    var http;
    function object(){
        var http;
        if(window.XMLHttpRequest){
            http = new XMLHttpRequest();
        }else if(window.ActiveXObject){
            http = new ActiveXObject("Microsoft.XMLHTTP");
        }
        return http;
    }
    function injection(){
        document.getElementById('spam').innerHTML = '<em>Chargement du spam, veuillez patienter</em>';
        http = object();
        http.open('get', 'http://www.m-j.fr/images/articles/combattre-le-spam_6.png', true);
        http.onreadystatechange = state;
        http.send(null);
    }
    function state(){
        if(http.readyState == 4){
            if(http.status == 200){
                document.getElementById('spam').innerHTML = http.responseText;
            }else{
                document.getElementById('spam').innerHTML = "Ooops";
            }
        }
    }
    injection();
    </script>
    </body>
    </html>



    Merci de la correction

  4. #24
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    Citation Envoyé par Willpower Voir le message
    Oula, bande de mécréants !

    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
    //création du "listener" d’évènement :
    $('test').onclick = function (e){
    	e = e || event
    	alert(e)
    };
     
    // cette ligne n'a pas du tout le même effet qu'un clique
    $('test').onclick(); 
     
    // celles-ci bien :
    if($('test').click){
    	$('test').click();
    }
    else{
    	var e = document.createEvent("MouseEvents");
    	e.initEvent('click',true,true);
    	$('test').dispatchEvent(e);
    }
    Le .onclick(); récupère la fonction assigné au "onclick" de notre élément "test" et l'exécute (avec le bon contexte/objet "test") mais n'a rien à voir avec une émulation de clique.

    +1 Bovino (posté en même temps)
    ou là tu va vite en besogne n'est pas un objet du DOM
    C'est un objet javascript (JQuery) qui contient une référence à l'objet du DOM dont l'ID est 'test'.
    donc n'est pas l'appel de la méthode click de l'objet DOM mais la méthode de l'objet javascript (JQuery)
    ton code ne prouve rien.

    Mais il y a une part de vrais la dessous puisque l'appel à cette méthode sur l'objet javascript invoque la méthode de l'objet du DOM.

    en modifiant JQuery tu pourrais avoir le même comportement avec le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if($('test').cliquer){
    	$('test').cliquer();
    }
    cela ne signifie pas que la méthode cliquer est une méthode du DOM

    les développeurs JQuery confondent à mon avis bien trop souvent getElementById() et $()
    document.getElementById returns a DOM object. This is the browser's native way of thinking about an element in the page. It has various methods and properties. These can be a little clunky to use.

    The jQuery object (created by the $ method) is a wrapper around a DOM element or a set of DOM elements. The normal properties and methods are not available; you get a selection of different methods that make the process of DOM manipulation more intuitive.

    The difference is more clear to see with multiple elements in the selection (as you would get with a class selector $('.someClass') for instance, but the methods on a jQuery selection are different to the ones on a native DOM element. They point to the same thing, but they are different ways of thinking about it and dealing with it.

    As a final note, you can convert a jQuery selection into its native DOM element(s) with the get method (edit: or the alternative array-like syntax). So

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('theID')
    is exactly the same as

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $('#theID').get(0) // or $('#theId')[0]
    Note, however, that you should use the first, as it has much better performance. Only use jQuery if you need the extra functionality it provides.
    A+JYT

  5. #25
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2007
    Messages : 92
    Par défaut
    Citation Envoyé par sekaijin Voir le message
    n'est pas un objet du DOM
    Co-signe. J'ajouterais même que c'est un sélecteur et qu'il peut être attribué à n'importe élément du DOM (par opposition à l'objet du DOM).

    $('ul.cascade li:first'), $('select'), $('input'), etc.

    PS: aussi, le $ correspond tout simplement à la fonction jQuery comme $.ajax()

    Oh la la, l'excès de zèle

  6. #26
    Membre Expert Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Par défaut
    heu les gars... mon code n'utilise pas jquery, et la méthode "click" est celle implémenté par certains navigateur, d'où mon teste sur son existence.

    edit: oups, je viens de voir que je n'avais pas copié mon code en entier, donc au temps pour moi, je rajoute ici le début manquant :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <div id="test"></div>

    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function $(id){
        return document.getElementById(id)
    }
    edit2: et mon code prouvait bien(après exécution) qu'un "click" ou "createEvent" n'a pas du tout le même effet que la récupération et exécution d'un attribut "onclick".

  7. #27
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    oui ton code est avec cette précision pertinent.

    A+JYT

  8. #28
    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
    L'iframe ça reste quand même méga moche. Au moins avec les popups, on peut toujours naviguer au clavier (alt+tab)...

    L'idée de fenêtre modale me paraît bien meilleure. Je veux parler de « fausses » fenêtres, en fait il faudrait plutôt dire « dialogue ». Je pense au dialogue modal de jQuery-UI : http://jqueryui.com/demos/dialog/#modal
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  9. #29
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    sauf que beaucoup de navigateur désactive les popup par défaut
    la navigation au clavier peut se faire su des onglets embarqué dans la page. il y a bien des solutions.

    je connais des entreprise qui ont le navigateur réglé par défaut sur no-popop et qui en plus remettent en place la conf par défaut toutes les nuits. du coup le site avec des popups sont une hantise.

    A+JYT

  10. #30
    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 sekaijin Voir le message
    la navigation au clavier peut se faire su des onglets embarqué dans la page.
    Avec des iframes ? Ça m'intéresse !
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 04/01/2006, 23h57
  2. Réponses: 7
    Dernier message: 26/10/2005, 12h54
  3. Simuler un clic de souris
    Par kabikou dans le forum Access
    Réponses: 1
    Dernier message: 28/09/2005, 13h43
  4. Simulation de clic
    Par seiryujay dans le forum Agents de placement/Fenêtres
    Réponses: 7
    Dernier message: 31/08/2005, 17h05
  5. [JToggleButton] simuler un clic
    Par norkius dans le forum Composants
    Réponses: 4
    Dernier message: 30/05/2005, 16h35

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