Chrome extensions copy

Par tribal, il y a 10 ans


Salut à tous, voilà en ayant suivi le petit tuto sur la création d'une extension chrome je suis confontre à un problème.

Je voudrais en cliquant sur un bouton copier le text inclus dans le input.

Dans un premier temps j'ai ajouter dans mon manifeste des permissions pour "clipboardWrite" et "clipboardRead"

Dans mon js j'ai mis ceci (bout de code trouvé sur le net)

function copy(){ var copyDiv = document.getElementById('textcopy'); copyDiv.focus(); document.execCommand('SelectAll'); document.execCommand("Copy", false, null); /*document.getElementById("textcopy").select(); document.execCommand("Copy", false, null);*/ } document.addEventListener("DOMContentLoaded", function () { document.getElementById("copy").onclick = copy; });

Et dans mon HTML ceci

<input type="text" id="textcopy" value="azerty"><button id="copy">Copier</button> <input type="text" id="textcopy" value="ytreza"><button id="copy">Copier</button>

Bon déjà le code fonctionne j'arrive à copier le 1er mais le deuxième ne fonctionne pas.
Auriez vous une idée ?

17 réponses

tribal, il y a 10 ans

C'est pour ca que à la base j'ai pris ce petit bout de code en JS. Mais la fonction copy avec la chrome extensions à l'air assez assardeuse

Azorgh, il y a 10 ans

Un ID doit être unique. Donc la tu as 2 boutons avec le même ID, et Javascript prend le premier. Donc soit change ta méthode getById par Class ou alors utilise les attributs HTML5.

tribal, il y a 10 ans

Merci de ta réponse je voudrais bien le faire en jquery mais je bloque sur le execCommand

betaWeb, il y a 10 ans

Salut,

Pourquoi vouloir absolument le faire en jQuery ?...

tribal, il y a 10 ans

Je ne veux pas le faire absolument en jquery, c'est que pour moi c'est plus simple. Sa fait un petit moment que je fait plus de vrai JS je suis un peu perdu

betaWeb, il y a 10 ans

Eh beh c'est le moment de t'y remettre. Il faut perdre cette mauvaise habitude de passer systématiquement par jQuery pour tout et rien.
Sinon pour ton problème, je pense que @PallMallShow a identifié la source, a savoir qu'un ID se doit d'être unique.

Azorgh, il y a 10 ans

Pourquoi dis tu qu'elle est hasardeuse ? (et pas assardeuse x) )
En effet, comme je l'ai dis dans mon premier message ainsi que @betaWeb, il faut qu'un ID soit unique. Donc probablement que la fonction 'hasardeuse' vient de là.

tribal, il y a 10 ans

bref je vais chercher

betaWeb, il y a 10 ans

Ne cherches pas, ton erreur vient soit des IDs en doublons, soit que Chrome ne supporte pas la fonction document.execCommand(); lorsque ça concerne les extensions (à vérifier).

tribal, il y a 10 ans

Oui je sais que le prob viens de mes ID j'essai de faire passer en class mais j'ai plus de 200 lignes donc faut que j'automatise un peu.
Je suis entrain d'essayer de faire une gestion avec un rel sur le bouton copy par exemple

tribal, il y a 10 ans

Bon j'ai beau essayer de mettre un get class sur mon bouton cliquer j'arrive pas à lui faire passer sur le second bouton
voici mon code actuel [https://jsfiddle.net/px7pfyru/]()

tribal, il y a 10 ans

merci mais c'est le meme tu a oublier faire update

betaWeb, il y a 10 ans

Rhaa p*tain c'est pour ça que je n'aime pas JSFiddle...

tribal, il y a 10 ans

merci effectivement j'etais loin de la solution.
Merci beaucoup en tout cas

betaWeb, il y a 10 ans

Pas de quoi. Rien de bien compliqué ^^
Passe ton sujet en résolu ;)