140 votes

Obtenir le contenu actuel du presse-papiers ?

J'aimerais connaître un moyen de faire en sorte que mon script détecte le contenu du presse-papiers et le colle dans un champ de texte à l'ouverture de la page, sans aucune saisie de l'utilisateur. Comment cela peut-il être fait ?

0 votes

Vous ne pouvez pas vraiment savoir ce qui se trouve dans le presse-papiers d'un utilisateur, à moins que vous n'ayez utilisé une sorte de backend flash lorsqu'il a copié le texte. ------- Mise à jour : A plus correct répondre ici

0 votes

109voto

iuliu.net Points 688

Utilisez le nouvelle API pour le presse-papiers via navigator.clipboard . Il peut être utilisé comme suit :

navigator.clipboard.readText()
  .then(text => {
    console.log('Pasted content: ', text);
  })
  .catch(err => {
    console.error('Failed to read clipboard contents: ', err);
  });

Ou avec une syntaxe asynchrone :

const text = await navigator.clipboard.readText();

N'oubliez pas qu'une boîte de dialogue de demande d'autorisation s'ouvrira à l'utilisateur, donc pas d'entourloupe possible.

Le code ci-dessus ne fonctionnera pas s'il est appelé depuis la console. Il ne fonctionne que si vous exécutez le code dans un onglet actif. Pour exécuter le code depuis votre console, vous pouvez définir un délai d'attente et cliquer rapidement dans la fenêtre du site Web :

setTimeout(async () => {
  const text = await navigator.clipboard.readText();
  console.log(text);
}, 2000);

Pour en savoir plus sur l'API et son utilisation, consultez le Documents pour développeurs Google .

Spec

22 votes

Notez qu'elle entraîne toujours une erreur lorsqu'elle est appelée depuis la console. Mais il hace fonctionnent sur une action directe de l'utilisateur, comme lorsque vous appuyez sur un bouton sur la page.

0 votes

Il semble que cela ne renvoie que du texte brut... même lorsque du texte riche se trouve dans le presse-papiers. comment puis-je obtenir cela ?

0 votes

@Michael, le support des images et autres vient d'être ajouté dans la dernière version de Chrome (76)

77voto

Dave Points 1764

window.clipboardData.getData('Text') fonctionnera dans certains navigateurs. Toutefois, dans de nombreux navigateurs où il fonctionne, l'utilisateur est invité à indiquer s'il souhaite ou non que la page Web ait accès au presse-papiers.

20 votes

Cela fonctionnera-t-il dans un autre navigateur qu'Internet Explorer ?

6 votes

Probablement pas. Voir cette question : stackoverflow.com/questions/400212/

8 votes

Vous pouvez vérifier la compatibilité ici caniuse.com/#search=clipboardData

18voto

Ricky Jiao Points 407

Vous pouvez utiliser

window.clipboardData.getData('Text')

pour obtenir le contenu du presse-papiers de l'utilisateur dans IE. Cependant, dans d'autres navigateurs, vous devrez peut-être utiliser Flash pour obtenir le contenu, car il n'existe pas d'interface standard pour accéder au presse-papiers. Vous pouvez peut-être essayer ce plugin Presse-papiers zéro

1 votes

Le lien fonctionne bien (à nouveau)

5 votes

ZeroClipboard ne vous permet que de copier à le presse-papiers, non lu de il.

7voto

Sollymanul Islam Points 175

La suite vous donnera le contenu sélectionné ainsi que la mise à jour du presse-papiers.

Liez l'identifiant de l'élément avec l'événement de copie, puis récupérez le texte sélectionné. Vous pouvez remplacer ou modifier le texte. Récupérez le presse-papiers et définissez le nouveau texte. Pour obtenir le formatage exact, vous devez définir le type comme "text/hmtl". Vous pouvez également le lier au document au lieu de l'élément.

document.querySelector('element').bind('copy', function(event) {
  var selectedText = window.getSelection().toString(); 
  selectedText = selectedText.replace(/\u200B/g, "");

  clipboardData = event.clipboardData || window.clipboardData || event.originalEvent.clipboardData;
  clipboardData.setData('text/html', selectedText);

  event.preventDefault();
});

29 votes

Bienvenue sur ce site ! Je suis heureux que vous contribuiez en répondant à une question. Mais sachez que votre réponse ne répond pas vraiment à la question de l'OP. La question est récupération de le contenu du presse-papiers et le coller quelque part lors de l'ouverture d'une page. En outre, comme la question ne comporte pas de jquery les réponses avec jQuery doivent contenir une note indiquant qu'une bibliothèque (jQuery) est utilisée.

0 votes

Il s'agit de sélectionner une donnée à partir d'une page Web et de la placer dans le presse-papiers, la question est de tirer les données du presse-papiers (elles peuvent provenir de n'importe quelle source), nous devrions donc être en mesure de récupérer les données du presse-papiers, peu importe d'où elles ont été copiées.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X