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 :

Le copier/couper/coller ?


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 909
    Par défaut Le copier/couper/coller ?
    Salut,

    Je m'intéresse au copier/couper/coller dans une page html et je ne pensais pas que c'était aussi compliqué...

    C'est apparemment à cause d'une question de sécurité que ce n'est pas si simple...

    Il semble que Ctrl+C, Ctrl+V et Ctrl+X fonctionne bien mais apparemment on ne peut pas déclencher ces actions à partir d'autres choses comme avec la souris (menu contextuel personnel et non celui du navigateur) ???

    Je ne suis pas le seul à mettre poser la question apparemment : Javascript: How to make a custom context menu with copy/paste options. Apparemment ils n'ont pas trouvé de réponses...

    Les choses ont-elles évoluées ?
    Merci.

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    pour le menu c'est simple soit un ul li soit une balise menu "menu" en bloquant le menu originale de l'explorateur
    pour le reste
    une variable globale balise span ou celle sque tu veux

    pour le couper extract content sur selection et appendchild dans un createelement("SPAN")
    pour ne pas modifier le code original de la selection comme extract content ferme les balise (autocompletion)tu recupere le innerhtml du span dans un contextualfragment pour les explorer compatible ou creation de textnode

    pour le copier
    pareil sauf que c'est clonnecontent sur range

    pour le coller
    si selection vide createrange sur selection collate=true puis insertnode frament ou textnode

    de cette maniere tu a acces a tout moment behind and after evenement
    je t'avais repondu dans mon autre post

    je pourrais meme dire que pour le couper/copier on pourrais utiliser seulement clonnecontent en deletant le range pour couper de facon a ne pas etre obligé de jouer avec le innerhtml de la selection encapsulé dans dans le span ,le texte resterait integre et s'autocompleterait l'ors de l'insertion IE le fait je suppose que les autres explorateurs le font aussi
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

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

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 909
    Par défaut
    Oui j'ai vu ta réponse ici : #21 et j'ai répondu :

    Merci.

    Oui apparemment IE fait mieux que les autres pour une fois...

    Sur FF et Chrome, la fonction execCommand() fonctionne pour le copier mais pas pour le coller...

    Et oui le menu contextuel natif le propose mais justement je pensais à faire mon propre menu et là ce n'est pas aussi simple que ce que je pensais...

    J'ai ouvert le fil...

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    ben si c'est simple
    je faisait comme ca avant de me servir de execCommand

    execCommand donne l'avantage de raccourcir le code et le simplifier pour les explorers compatible bien sur
    tu bloque le menu contextuel d'origine
    tu repere le x et y
    tu créé ton menu (UL/LI) attention il faut le attribut "unselectable" sinon la selection change pour le LI ou alors comme je l'avais fait mettre des boutons dans les LI
    et selon l'option extract/clone>content
    etc...

    je sais pas si je l'ai toujours ce WysiWig a l'epoque c'etait le debut de IE 09 je regarderais dans mes archives il melangeais le vbs et le JS
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

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

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 909
    Par défaut
    Ah oui je comprends mieux, en fait effectivement ça doit être possible si ça reste dans ton éditeur, dans ce cas tu peux tout gérer toi même, on aura notre propre presse papier...

    Mais en faisant cela tu n'utilises plus le presse papier justement et donc tu ne pourras pas coller du texte que tu as copié ailleurs que dans ton éditeur...

    Ou je me trompe ?



    PS : ---> Mais bon c'est déjà quelque chose à faire (c'est mieux que rien) et pour le reste il y a toujours les raccourcis clavier...

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    ben alors ??????
    quand tu click sur ton submenu "coller" tu interroge le presse papier et t si il y a quelque chose tu le recupere dans le span et tu n'oublie pas de le vider apres sinon il repond toujours oui
    meme si tu change d'avis et ne colle pas il est pas perdu puisque qu'il est dans le span


    ou tout simplement if (selectedtext()===""){ code pour récupérer pressepaier;}

    et insertion

    voir meme hoh!! que je suis bete !!!
    si le span est vide ou null selon ta methode de déamorcage que tu aura choisi paster avec la fonction originale tout simplement document.execWeb( arguments,arguments) si c'est compatible avec ton navigateur sinon utiliser la fonction similaire propre a ton navigateur voir mettre toute les methodes dans un if else et un catch(e)
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

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

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 909
    Par défaut
    Citation Envoyé par patricktoulon Voir le message
    re
    pour le menu c'est simple soit un ul li soit une balise menu "menu" en bloquant le menu originale de l'explorateur
    Oui justement je pensais à ça mais par exemple ici : Custom Context Menu with Javascript? ils disent que c'est impossible et quelques temps plus tard ici : Javascript: How to make a custom context menu with copy/paste options il n'y a toujours pas de réponses...

  8. #8
    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


    J'ai trouvé de la lecture, mais je n'ai pas testé. Je vois que :

    • La permission de l'utilisateur est requise pour utiliser son clipboard !
    • Tous les navigateurs ne réagissent pas de la même manière.
    • C'est réservé aux navigateurs non obsolètes.


    Lire :

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

  9. #9
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonsoir daniel
    c'est la meme page que toi qui m'a mené aux pages permissions mais en francais
    https://developer.mozilla.org/fr/Add..._presse_papier
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  10. #10
    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
    Nos réponses se sont croisées et j'ai donné les liens en anglais (je consulte souvent les pages en anglais car la traduction n'est pas toujours au point ni à jour).

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

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

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 909
    Par défaut
    Merci.

    Mais ces liens concernent les WebExtensions apparemment mais il y a quand même des choses qui confirment mes tests : Pour le coller c'est plus stricte que pour le copier et le couper.

    J'ai trouvé aussi des liens intéressants sur le sujet :

    - The Definitive Guide to Copying and Pasting in JavaScript
    - Accessing the System Clipboard with JavaScript – A Holy Grail?
    - javascript cut/copy/paste to clipboard: how did Google solve it?

    Mais je pense que certaines choses ne sont plus valables, cela a évolué, pour l'instant je constate que :

    1---> Les racourcis clavier Ctrl+C, Ctrl+V et Ctrl+X fonctionnent bien.

    2---> On peut aussi exécuter ces actions avec le menu contextuel natif du navigateur mais il y a des conditions comme par exemple le fait que l'élément doit être éditable, avoir le focus... Mais dans mes tests le copier/couper fonctionnait aussi avec un élément non éditable.

    3---> A partir d'autres choses que ces deux moyens ci-dessus (bouton, menu personnel...) je n'ai pas réussi à faire du coller mais le copier/couper fonctionne avec la fonction execCommand().

    Il semblerait que ce n'était pas toujours le cas, il y a ce lien : https://developers.google.com/web/up...-copy-commands qui confirme le copier/couper avec la fonction execCommand() mais rien à propos du coller...

    Voilà pour l'instant...

  12. #12
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonsoir beginner

    pour choper le texte copier ailleurs que dans l'explorer on fait exactement pareil qu'en VBA VB VBS pour IE
    A SAVOIR
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var clipText = window.clipboardData.getData('Text');
    ce qui fait que ma fonction coller de mon exemple plus haut devient
    Code javascript : 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
    function coller() {
     console.log("teste si memo est null");
     if (memo != null) {
      console.log("memo n'est pas null");
      var sel = selection();
      var range = getrange();
      // range.collapse(true);
      range.insertNode(memo);
      console.log("collage");
      memo = null
      console.log("memo n'est plus rien");
     } else {
      var clipText = window.clipboardData.getData('Text');
      memo = document.createElement("FONT");
      memo.innerHTML = clipText;
      var sel = selection();
      var range = getrange();
      // range.collapse(true);
      range.insertNode(memo);
      console.log("memo est null alors paster avec le paste original");
      console.log(" voila ce qui a été collé");
      console.log(clipText);
    }
    }
    en gros je met le contenu de clipboard dans memo et j'insert

    ca fonctionne nikel avec IE
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

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

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 909
    Par défaut
    Salut,
    Citation Envoyé par patricktoulon Voir le message
    pour choper le texte copier ailleurs que dans l'explorer on fait exactement pareil qu'en VBA VB VBS pour IE
    A SAVOIR var clipText = window.clipboardData.getData('Text');
    Oui tout à fait, on n'a pas accès au clipboardData via l'objet window sur les autres navigateurs, cette fois c'est IE qui nous facilite les choses.

  14. #14
    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
    Bientôt du copier/coller sans peine ? Arrivée sur Chrome 66 de Async Clipboard API, mais il faudra encore attendre son arrivée sur Firefox et Edge avant de le mettre en oeuvre.

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

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

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 909
    Par défaut
    Merci pour l'info.

Discussions similaires

  1. Menu édition: copier, couper, coller..
    Par rudhf dans le forum Windows Forms
    Réponses: 9
    Dernier message: 02/06/2007, 19h47
  2. [VB6] copier,couper,coller un texte
    Par guizmoh dans le forum VB 6 et antérieur
    Réponses: 14
    Dernier message: 27/03/2006, 22h05
  3. [Word] Problème de copier/couper/coller suivant les versions
    Par SkYsO dans le forum API, COM et SDKs
    Réponses: 6
    Dernier message: 07/12/2005, 21h11
  4. [VB6] Interception des évènement Copier/Couper/Coller
    Par youtch dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 18/10/2002, 17h09

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