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 :

Clic automatique sur un input de type file (sur Chrome)


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2019
    Messages : 4
    Par défaut Clic automatique sur un input de type file (sur Chrome)
    Bonjour,

    Après de multiples recherches je n'arrive pas à trouver ce que je recherche
    Si quelqu'un trouve une solution ce sera mon sauveur

    Dans ma page html j'ai un input :
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <body onload="cliquer()">
    <input type='file' id='test'>
    </body>

    Mon objectif est très simple mais à cause de la sécurité mise en place par Chrome cela paraît impossible (mais rien n'est impossible en informatique n'est-ce pas ? ) :
    Je veux qu'à la fin du chargement de la page un script JavaScript simule un clic sur l'input de la page web (et donc sans aucune action de la part de l'utilisateur !)

    J'ai donc tout bonnement essayé ce code :
    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function cliquer() {
    	document.getElementById("test").click();
    }

    Il fonctionne sur Internet Explorer et sur Mozilla Firefox, Chrome me tire la langue et ne veut rien entendre..

    J'ai donc vu un topic qui demande d'utiliser jQuery, ce que j'ai fait :
    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $(document).ready(function() 
    {
    	$('#test').trigger('click').click();
    });

    Toujours aucun résultat..
    Pourtant la fonction click() fonctionne bien, je l'avais testé sur un élément
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type='radio' id='test2'>
    Et là en appliquant les deux méthodes précédentes le radio button est bien sélectionné à la fin du chargement de la page.

    Merci à celui qui se penchera de plus près sur mon problème !

    Bonne journée

  2. #2
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut


    Normalement, il suffit de provoquer un clic, mais c'est impossible pour raison de sécurité !
    La boîte de dialogue du sélecteur de fichier ne peut être affichée qu'avec une activation de l'utilisateur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    window.addEventListener('load', ev => {
        // le DOM est construit et la page web est visible
     
        // début code du test
     
        document.querySelector('#test').click();
     
        // fin code du test
    }, {
        capture: false,
        passive: true,
        once: false
    });

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2019
    Messages : 4
    Par défaut
    Hey

    Merci de t'être penché sur mon problème !

    Normalement, il suffit de provoquer un clic, mais c'est impossible pour raison de sécurité !
    La boîte de dialogue du sélecteur de fichier ne peut être affichée qu'avec une activation de l'utilisateur.
    C'est vraiment frustrant car sur Firefox et IE cela est tout à fait possible ^^'

    Le code que tu m'as proposé ne résout malheureusement pas le soucis.

    Par contre je suis tombé sur un lien très intéressant puisqu'il reproduit à la lettre ce que je recherche :
    https://jsfiddle.net/0L794s53/1/

    Lorsque la page a chargé, la boîte de sélection d'un fichier s'ouvre sans aucune action de ma part !

    Ici l'explication associée (LinusBorg):
    https://github.com/vuejs/vue/issues/7028

    Je t'avoue que je n'ai pas très bien compris la démarche ^^'

    Il faudrait donc que je passe par le framework Vue.js pour faire des bidouilles sur les éléments graphiques de la page ?


    Bonne journée danielhagnoul

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Salut,
    Citation Envoyé par CrazyGeekMan Voir le message
    Par contre je suis tombé sur un lien très intéressant puisqu'il reproduit à la lettre ce que je recherche :
    https://jsfiddle.net/0L794s53/1/
    J'ai eu la même idée (utiliser la fonction setTimeout) mais sur Chrome cela ne fonctionnait toujours pas...

    PS : Je pense que le code en question n'a rien à voir avec Vue.js, c'est juste que la fonction setTimeout est utilisée pour déclencher le clique un certain temps (1000ms) après le chargement du script... Je pense que ce code est justement un exemple sans Vue.js pour mettre en évidence le problème avec Chrome...

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2019
    Messages : 4
    Par défaut
    Salut à toi Beginner. !

    Citation Envoyé par Beginner.
    J'ai eu la même idée (utiliser la fonction setTimeout) mais sur Chrome cela ne fonctionnait toujours pas...
    Ce lien en question m'intrigue puisqu'il ouvre l'explorateur de fichier de façon complètement aléatoire sur Chrome !

    https://jsfiddle.net/0L794s53/1/

    Essaie de cliquer dessus, si rien ne se passe appuie 2 ou 3 fois sur f5
    Si toujours rien ferme l'onglet et réessaie encore
    Tu verra qu'à un moment donné le click() fonctionnera.. (je n'ai aucune explication à ça.. ?)

    Limite si ça ne marche pas de ton côté je suis prêt à enregistrer mon écran pour te prouver que l'explorateur s'ouvre !

    Bonne journée

  6. #6
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    Salut,

    Chez moi cela ne fonctionne même pas avec Firefox. Tu devrais changer de stratégie. Pourquoi veux-tu faire cela, quel est l'intérêt ? S'il y a une raison pratique que tu ne nous a pas indiquée dis-là nous, on trouvera certainement des moyens de t'aider, mais tel quel, sur un onload tu risque de chercher longtemps pour rien.

    Au passage pour jQuery ce serait plutôt $('#test').trigger('click'); mais cela ne changera rien dans ton cas, car c'est le onload qui pose problème pour un input de type file.

Discussions similaires

  1. Input de type File sans le champ ?
    Par DemonKN dans le forum Balisage (X)HTML et validation W3C
    Réponses: 9
    Dernier message: 11/02/2010, 13h59
  2. styler un input de type file
    Par Methode dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 11/01/2007, 23h11
  3. createElement input de type file : pb d'upload de fichier
    Par firejocker dans le forum Général JavaScript
    Réponses: 15
    Dernier message: 16/02/2006, 14h08
  4. Pb avec un input de type file
    Par stecos dans le forum Langage
    Réponses: 1
    Dernier message: 25/10/2005, 10h03
  5. chemin d'un input de type file
    Par sbbn1 dans le forum ASP
    Réponses: 2
    Dernier message: 05/04/2004, 20h19

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