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 :

document.execCommand("copy") reste vide


Sujet :

JavaScript

  1. #1
    Membre du Club
    document.execCommand("copy") reste vide
    Salutations,

    Je suis bloqué comme un couillon :

    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
    (...)
    	<?php
            (...)
            $i = 1;
            foreach ($contenu as $liste_fichiers) {
                    $inputId = +$i;
                    $file5 = "http://admin.wda-fr.org" . $dossier . "/" . $liste_fichiers;
            (...)
                    ?>
            (...)
    			<td align="center">
    				<input hidden="hidden" type="text" id="<? echo $inputId; ?>" value="<?php echo $file5; ?>">
    				<button onclick="myFunction('<? echo $inputId; ?>')">Copier l'URL</button>
    			</td>
    		</tr>
            <?php } ?>
    (...)
     
    <script>
            function myFunction( id ) {
                    var copyText = document.getElementById( id );
                    copyText.select();
                    document.execCommand("copy");
                    alert("URL en copie :\r" + copyText.value);
            }
    </script>
     
    (...)


    copyText.value est bon, mais document.execCommand("copy") reste vide ...

    Any idea ?
    Digital self-made Man - OnLine since 1993.
    http://wda-fr.org - http://mathieu.charreyre.net

  2. #2
    Membre expert
    developer.mozilla.org/fr/docs/Web/API/document/execCommand
    copy
    Copie la sélection courante dans le presse papier.
    il faut que tu aies selectionne quelque chose au sens "hightligth"... ce qu'on fait avec la souris par exemple

    developer.mozilla.org/fr/docs/Web/API/Window/getSelection

    je sais que c'est possible de "selectionner" du texte en JS (comme on le ferait avec la souris), mais je ne l'ai jamais fais, ca ne devrait pas etre trop complique a trouver

    [edit]
    je viens de trouver : https://developer.mozilla.org/fr/doc...SelectionRange
    [edit 2]
    tu as aussi le select() developer.mozilla.org/fr/docs/Web/API/HTMLInputElement/select
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

  3. #3
    Membre du Club
    Oki, je vois.

    Par contre, niveau nomenclature ?
    Digital self-made Man - OnLine since 1993.
    http://wda-fr.org - http://mathieu.charreyre.net

  4. #4
    Membre émérite
    Salut,

    Je suis d'accord avec Doksuri, même problème ici : #7...

  5. #5
    Membre du Club
    J'ai beau tester dans tous les sens, la variable se vide à chaque fois.
    Ou sinon, elle ne garde que la première entrée de la boucle.

    J'ai tenté ce nouveau code sans résultat :

    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
    (...)
     
    			<td align="center">
    				<!-- The text field -->
    				<input hidden="hidden" type="text" value="<?php echo $file5; ?>" id="myInput">
    				<!-- The button used to copy the text -->
    				<button onclick="myFunction()" onmouseout="outFunc()">Copier URL</button>
    			</td>
     
    (...)
     
    <?php } // fin de boucle ?>
     
    (...)
     
    <script>
            function myFunction() {
              var copyText = document.getElementById("myInput");
              copyText.select();
              copyText.setSelectionRange(0, 99999);
              document.execCommand("copy");
     
              var tooltip = document.getElementById("myTooltip");
              tooltip.innerHTML = "Copied: " + copyText.value;
            }
     
            function outFunc() {
              var tooltip = document.getElementById("myTooltip");
              tooltip.innerHTML = "Copy to clipboard";
            }
    </script>
     
    (...)
    Digital self-made Man - OnLine since 1993.
    http://wda-fr.org - http://mathieu.charreyre.net

  6. #6
    Membre du Club
    Hello,

    Je me permets d'apporter une réponse, qui vaudra ce qu'elle vaudra .

    Je me trompe peut-être mais ce que tu veux, c’est copier un lien (qui est la valeur d'une variable) dans le presse papier ?

    J'ai eu une chose similaire (copier le titre d’une musique et non un lien) vers le presse papier.

    Aucun code que je trouvais sur le net ne fonctionnait, jusqu'au code suivant :

    Code HTML :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <script>
    function copy(){
      txt = "pouet pouet";
      cb.value = txt;
      cb.style.display='block';
      cb.select();
      document.execCommand('copy');
      cb.style.display='none';
     }
    </script>
    <input id="cb" type="text" hidden>
    <img src="icone_copier.png" onclick="copy()">

    Car de ce que j'ai pu comprendre, document.execCommand('copy'); copie ce qui est dans un input et non une valeur de variable. Donc l'idée étant de mettre la valeur à copier, vers un input caché, de sélectionner la valeur de cet input et de la copier.

    Voilà voilà
    Retrouvez-moi tous les dimanches à 22H pour une heure de mix en live tout au vinyle sur eurodance90.fr