Aktuellen Inhalt der Zwischenablage abrufen? [geschlossen]


106

Ich möchte wissen, wie mein Skript den Inhalt der Zwischenablage erkennen und beim Öffnen der Seite in ein Textfeld einfügen kann, ohne dass der Benutzer etwas eingibt. Wie geht das?


Sie können nicht wirklich wissen, was sich in der Zwischenablage eines Benutzers befindet, es sei denn, Sie haben beim Kopieren des Textes eine Art Flash-Backend verwendet. ------- Update: Eine korrektere Antwort hier
Naftali aka Neal



Antworten:


74

window.clipboardData.getData('Text')funktioniert in einigen Browsern. In vielen Browsern, in denen dies funktioniert, wird der Benutzer jedoch gefragt, ob die Webseite Zugriff auf die Zwischenablage haben soll oder nicht.


17
Funktioniert dies in einem anderen Browser als Internet Explorer?
Anderson Green

6
Wahrscheinlich nicht. Siehe diese Frage: stackoverflow.com/questions/400212/…
Dave

7
Sie können die Kompatibilität hier überprüfen caniuse.com/#search=clipboardData
Sergey Novikov

1
Eine bessere Lösung besteht darin, das Knotenobjekt zu erhalten, nicht jedoch das Fensterobjekt. Siehe hier
rplaurindo

66

Verwenden Sie die neue Zwischenablage-API über navigator.clipboard. Es kann folgendermaßen verwendet werden:

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

Oder mit asynchroner Syntax:

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

Beachten Sie, dass der Benutzer dadurch ein Dialogfeld mit einer Berechtigungsanforderung erhält, sodass keine lustigen Geschäfte möglich sind.

(HINWEIS: Dies funktioniert nicht, wenn es von der Konsole aus aufgerufen wird, erfordert jedoch eine direkte Benutzeraktion wie das Drücken einer Taste, danke @Artur)

Mehr dazu

Spec


18
Beachten Sie, dass beim Aufruf von der Konsole immer ein Fehler auftritt. Aber es tut Arbeit auf einer direkten Aktion des Benutzers, wie wenn Sie eine Taste auf der Seite drücken.
Klesun

Dies scheint nur einfachen Text zurückzugeben ... selbst wenn sich Rich Text in der Zwischenablage befindet. Wie kann ich das bekommen? \
Michael

@ Michael, Unterstützung für Bilder und andere wurde gerade in der letzten Chrome-Version (76)
hinzugefügt

Sie können in der Konsole testen, indem Sie ein einschließen setTimeoutund dann wieder auf die Seite klicken.
Edbentley

18

Sie können verwenden

window.clipboardData.getData('Text')

um den Inhalt der Zwischenablage des Benutzers im IE abzurufen. In anderen Browsern müssen Sie möglicherweise Flash verwenden, um den Inhalt abzurufen, da es keine Standardschnittstelle für den Zugriff auf die Zwischenablage gibt. Möglicherweise können Sie dieses Plugin Zero Clipboard ausprobieren


1
Link funktioniert gut (wieder)
stephanos

5
ZeroClipboard können Sie nur kopieren , um die Zwischenablage, nicht lesen von ihm.
DSimon

5

Im Folgenden erhalten Sie den ausgewählten Inhalt sowie die Aktualisierung der Zwischenablage.

Binden Sie die Element-ID an das Kopierereignis und rufen Sie den ausgewählten Text ab. Sie können den Text ersetzen oder ändern. Holen Sie sich die Zwischenablage und legen Sie den neuen Text fest. Um die genaue Formatierung zu erhalten, müssen Sie den Typ als "text / hmtl" festlegen. Sie können es auch anstelle des Elements an das Dokument binden.

      $(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();
      });

18
Willkommen auf dieser Seite! Ich bin froh, dass Sie einen Beitrag leisten, indem Sie eine Frage beantworten. Beachten Sie jedoch, dass Ihre Antwort die Frage des OP nicht wirklich beantwortet. Die Frage ist , Inhalte aus der Zwischenablage abzurufen und beim Öffnen einer Seite irgendwo einzufügen. Da die Frage kein jquery- Tag enthält, sollten Antworten mit jQuery den Hinweis enthalten, dass eine Bibliothek (jQuery) verwendet wird.
KarelG
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.