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 :

Copier dans le presse papier


Sujet :

JavaScript

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2009
    Messages
    92
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 92
    Points : 70
    Points
    70
    Par défaut Copier dans le presse papier
    Bonjour,

    J'ai fait un bouton qui execute au clic une fonction JS. Dans cette fonction je récupère l'url de la page, jusque là pas de problème, un alert me confirme que mon url est bien récupérée, le problème vient après, je ne sais pas comment enregistrer ce lien dans le presse papier de la machine.

    J'ai essayé avec execCommand() sans succès.
    Me servant des sessions de phpbb, ce dernier me refuse l'accès à $_SERVER, d'où la récupération de l'url en js d'ailleurs.

    Donc, ayant mon url via JS, comment je peux faire pour que la copie s'enregistre dans le presse papier ?

    Même si je ne pense pas qu'il y ai d'utilité, je vous mets le code JS, le plus gros fonctionne, je n'ai d'ailleurs pas "d'erreur" le if/else me retourne que c'est bien copié, alors que non :s

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function copieUrl(id){
    	var lien = document.location.href+"&id="+id;
    	if(document.execCommand('copy')){
    		alert("L'URL à bien été copiée dans le presse papier, faites un coller (ctrl + v) là où vous souhaitez la coller.\r\n\r\n"+lien);
    	}else{
    		alert("Impossible de copier le lien automatiquement !\r\nSurligner le lien et faites CTRL + C pour le copier puis CTRL + V là où vous souhaitez le coller.\r\n\r\n"+lien);
    	}
    }

  2. #2
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Mai 2014
    Messages
    388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Arménie

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2014
    Messages : 388
    Points : 578
    Points
    578
    Par défaut
    Bonjour,

    Je crois que ce n'est pas possible. Par contre, on peut enregistrer des données dans un cookie.

  3. #3
    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 : 73
    Localisation : Belgique

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

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125

    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.)

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Août 2009
    Messages
    92
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 92
    Points : 70
    Points
    70
    Par défaut
    Citation Envoyé par eleydet Voir le message
    Bonjour,

    Je crois que ce n'est pas possible. Par contre, on peut enregistrer des données dans un cookie.


    Le cookie n'est pas la solution, j'ai besoin que l'on puisse faire un coller depuis le menu contextuel ou via ctrl+v !

    Citation Envoyé par danielhagnoul Voir le message
    Merci, mais c'est pas ce que je recherche, j'ai besoin que la copie reste en mémoire pour pouvoir partager le lien via email, etc.
    Là d'après ce que j'ai compris c'est pas le cas

    "...Ouvrir une page dans un nouvel onglet ou une fenêtre entrainera l'initialisation d'une nouvelle session, qui diffère du comportement du cookie."
    Il y a des sites qui ont ce genre de système, lors du clic sur un bouton, ça copie l'url dans le presse papier.
    Après quelques recherches supplémentaire, c'est une combinaison de JS et Flash, mais la partie Flash ne me tente pas vraiment niveau sécurité. Flash n'a pas très bonne réputation ...

    Je vais quand même essayer avec la combi JS/Flash et je vous redis.

  5. #5
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    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 380
    Points : 10 410
    Points
    10 410
    Par défaut
    On utilise plus flash aujourd'hui c'est déprécié et presque plus aucun navigateur ne le supporte par défaut.

    Pour des besoins similaires je fais une requête ajax et j'enregistre le contenu copié dans une variable de session, qui est donc disponible depuis toutes les pages. Suffit de définir ensuite une combinaison de touches (pourquoi pas Ctrl+v mais tu peux utiliser une combinaison spécifique pour ne pas modifier le comportement par défaut de ce raccourci, ainsi le visiteur peut disposer de plusieurs tampons mémoire) qui sera interceptée en javascript et fera une seconde requête ajax pour récupérer et insérer le contenu à l'endroit du curseur ou dans un champ spécifique.

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

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 873
    Points : 3 717
    Points
    3 717
    Par défaut
    Citation Envoyé par Maxime50 Voir le message
    Il y a des sites qui ont ce genre de système, lors du clic sur un bouton, ça copie l'url dans le presse papier.
    Après quelques recherches supplémentaire, c'est une combinaison de JS et Flash, mais la partie Flash ne me tente pas vraiment niveau sécurité. Flash n'a pas très bonne réputation ...
    Je ne sais pas comment ils font dans ces sites dont tu parles mais c'est possible de le faire avec la commande execCommand que tu as essayée au départ sans succès...

    Citation Envoyé par Maxime50 Voir le message
    J'ai essayé avec execCommand() sans succès.
    ...
    Même si je ne pense pas qu'il y ai d'utilité, je vous met le code JS, le plus gros fonctionne, je n'ai d'ailleurs pas "d'erreur" le if/else me retourne que c'est bien copié, alors que non :s

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function copieUrl(id){
        var lien = document.location.href+"&id="+id;
        if(document.execCommand('copy')){
            alert("L'URL à bien été copiée dans le presse papier, faites un  coller (ctrl + v) là où vous souhaitez la coller.\r\n\r\n"+lien);
        }else{
            alert("Impossible de copier le lien automatiquement  !\r\nSurligner le lien et faites CTRL + C pour le copier puis CTRL + V  là où vous souhaitez le coller.\r\n\r\n"+lien);
        }
    }
    C'est normal que cela ne fonctionne pas puisque pour copier un texte il faut que celui-ci soit sélectionné donc à toi de mettre le texte quelque part dans le document puis de le sélectionner et alors lancer la fonction document.execCommand('copy')...

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

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 873
    Points : 3 717
    Points
    3 717
    Par défaut
    Citation Envoyé par Beginner. Voir le message
    C'est normal que cela ne fonctionne pas puisque pour copier un texte il faut que celui-ci soit sélectionné donc à toi de mettre le texte quelque part dans le document puis de le sélectionner et alors lancer la fonction document.execCommand('copy')...
    Si on veut faire ça automatiquement on peut "fabriquer" une div, on met dedans le lien, on ajoute la div au document.body et on sélectionne le texte qui s'y trouve automatiquement (voir le code) puis enfin on supprime cette div et si on veut que cette div ne soit pas visible tout en restant "selectionable" on peut mettre son opacité à 0...

    J'ai mis le code à tester ici : http://jsbin.com/zeqafeguto/edit?js,output mais il faut essayer sur une page car le lien copié est je pense celui d'une iframe, ce n'est pas celui qu'on voit dans le navigateur...

    Et pour id, comme je ne sais pas ce que c'est j'ai mis "blablabla"...

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Août 2009
    Messages
    92
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 92
    Points : 70
    Points
    70
    Par défaut
    J'étais en train de me battre avec select(); jusqu'à ce que je revienne regarder et que je vois votre code ^^.

    Merci du coup de main, j'ai très peu modifié le code je vous le mets.

    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
     
    function copieUrl(id){
    	var lien  = document.location.href+"&id="+id,
    	    span  = document.getElementById("lien"),
    	    sel = window.getSelection(),
       	    rangeObj = document.createRange();
     
     
            span.innerHTML = lien;
    	rangeObj.selectNodeContents(span);
    	sel.removeAllRanges();
    	sel.addRange(rangeObj);
     
    	if(document.execCommand('copy')){
    		alert("L'URL à bien été copiée dans le presse papier, faites un coller (ctrl + v) là où vous souhaitez la coller.\r\n\r\n"+lien);
    	}else{
    		alert("Impossible de copier le lien automatiquement !\r\nSurligner le lien et faites CTRL + C pour le copier puis CTRL + V là où vous souhaitez le coller.\r\n\r\n"+lien);
    	}
    }

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

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 873
    Points : 3 717
    Points
    3 717
    Par défaut
    Ca marche normalement, non ?
    Citation Envoyé par Maxime50 Voir le message
    Merci du coup de main, j'ai très peu modifier le code je vous le mets.
    De rien... Mais dans ce code, la <span> doit être déjà présente dans le document, dans mon code je suis parti du principe qu'elle n'existait pas et qu'il fallait l'ajouter puis la supprimer pour que le document redevienne comme il était avant la copie...

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Août 2009
    Messages
    92
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 92
    Points : 70
    Points
    70
    Par défaut
    Oui, en partie, l'id n'est pas transmis dans le presse papier, mais le reste oui, alors qu'il apparait bien dans le alert. Je cherche d'où ça peut venir, surtout que l'un comme l'autre utilisent la variable "lien" pour le copier/afficher.

    Et oui mon span est déjà présent et gérer direct dans le fichier css.

    Edit : en fait c'est ma faute ^^, j'avais mélanger la création des variables avec l'attribution du contenu (innerHTML) et collé des ";" et bien sùr sans mettre var au début :s.

    Je teste encore.

    Edit 2 : Voilou c'est tout corrigé, parfois c'est vraiment des petites erreur à la c** qui font perdre du temps ! Encore merci, ça marche impec

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

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 873
    Points : 3 717
    Points
    3 717
    Par défaut
    Alors déjà pour commencer, remplacez les virgules par des points-virgules aux lignes 3,5 et 6...

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Août 2009
    Messages
    92
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 92
    Points : 70
    Points
    70
    Par défaut
    Oui c'est fait, j'ai édité mon message précédent.

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

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 873
    Points : 3 717
    Points
    3 717
    Par défaut
    Ah ben nos messages se sont croisés... Oui donc remplacer les virgules et rajouter aussi le mot clé "var" (je l'avais mis pourtant).

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Août 2009
    Messages
    92
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 92
    Points : 70
    Points
    70
    Par défaut
    Oui, c'est de ma faute, en modifiant le code pour récupérer mon span déjà existant j'ai déplacé les lignes de codes, du coup je me suis retrouvé avec les lignes mélangées.

    En général j'initialise mes variables au début en faisant comme ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    var maVar1 = "valeur",
         maVar2 = "valeur",
         ....;

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

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 873
    Points : 3 717
    Points
    3 717
    Par défaut
    Ah ok je viens de lire le "edit 2"...

    Ben tant mieux si ça marche, cela fait un fil de plus "résolu"...

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Août 2009
    Messages
    92
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 92
    Points : 70
    Points
    70
    Par défaut
    Oui et souvent je suis étonné, parce que quand on connait pas ou qu'on arrive pas à faire ce qu'on veut, on part dans des trucs super compliqué dans sa tête alors qu'en faite c'est tout c** ^^.

    Je passe en résolu.

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

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 873
    Points : 3 717
    Points
    3 717
    Par défaut
    Oui c'est vrai et probablement que je serais aussi parti dans quelque chose de compliqué mais il se trouve que récemment je travaillais sur cette fonction (execCommand) et aussi sur les range et selection...

  18. #18
    Membre régulier
    Profil pro
    Inscrit en
    Août 2009
    Messages
    92
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 92
    Points : 70
    Points
    70
    Par défaut
    J'ai quand même corrigé le code dans le message plus haut, sinon vous pouvez être certain que quelqu'un va se contenter de copier/coller sans lire le reste du sujet et venir dire que le code ne fonctionne pas !!!

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

Discussions similaires

  1. Copier dans le presse-papier
    Par leoz01 dans le forum PyQt
    Réponses: 3
    Dernier message: 04/01/2009, 11h17
  2. fonction:copier dans le presse papier
    Par marie2006 dans le forum InfoPath
    Réponses: 3
    Dernier message: 21/10/2008, 11h10
  3. Bouton pour copier dans le presse-papier chez le client
    Par kuja2053 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 29/08/2007, 17h01
  4. Bouton copier dans le presse-papier
    Par beru333 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 02/08/2007, 17h28
  5. Copier dans le presse-papier
    Par Raphs dans le forum Access
    Réponses: 4
    Dernier message: 08/08/2006, 10h45

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