web-dev-qa-db-fra.com

Obtenir le contenu actuel du presse-papiers?

J'aimerais savoir comment faire en sorte que mon script détecte le contenu du presse-papier et le colle dans un champ de texte lorsque la page est ouverte, sans aucune intervention de l'utilisateur. Comment ceci peut être fait?

73
Gabriele Cirulli

window.clipboardData.getData('Text') fonctionnera dans certains navigateurs. Cependant, de nombreux navigateurs sur lesquels il fonctionne ne sont plus à indiquer à l'utilisateur s'il souhaite ou non que la page Web ait accès au Presse-papiers.

64
Dave

En fonction du moment où vous lisez ceci, le nouvelle API du presse-papier peut être disponible 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 la syntaxe asynchrone:

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

N'oubliez pas que cela invitera l'utilisateur à afficher une boîte de dialogue de demande d'autorisation, ce qui rend toute activité amusante possible.

(NOTE: Ceci ne fonctionnera pas s'il est appelé depuis la console, mais nécessitera une action directe de l'utilisateur, telle que la pression d'un bouton, merci @Artur)

Plus sur ça

Spec

36
iuliu.net

Vous pouvez utiliser

window.clipboardData.getData('Text')

pour obtenir le contenu du presse-papiers de l'utilisateur dans IE. Cependant, dans un autre navigateur, vous devrez peut-être utiliser flash pour obtenir le contenu, car il n’existe pas d’interface standard pour accéder au presse-papiers. Peut-être que vous pouvez avoir essayer ce plugin Zero Clipboard

15
Ricky Jiao

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

Liez l'ID d'élément avec l'événement copy, 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.

      $(ElementId).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();
      });
5
Sollymanul Islam