35 Stimmen

Ist es möglich, die Zwischenablage in Firefox, Safari und Chrome mit JavaScript zu lesen?

Ich versuche, den Inhalt der Zwischenablage mit JavaScript zu lesen. Mit dem Internet Explorer ist es möglich, mit der Funktion

window.clipboardData.getData("Text")

Gibt es eine ähnliche Möglichkeit, die Zwischenablage in Firefox, Safari und Chrome zu lesen?

1 Stimmen

Manchmal. Das hängt von der Einstellung der Sicherheitsoption "Programmatischen Zugriff auf die Zwischenablage zulassen" ab. In der IE7-Sicherheitsvoreinstellung "Mittel-hoch" ist sie so eingestellt, dass sie vor dem Zugriff gefragt wird.

0 Stimmen

18voto

eyelidlessness Punkte 60421

Safari unterstützt das Lesen der Zwischenablage während onpaste Veranstaltungen:

Informationen

Sie wollen etwas tun wie:

someDomNode.onpaste = function(e) {
    var paste = e.clipboardData && e.clipboardData.getData ?
        e.clipboardData.getData('text/plain') :                // Standard
        window.clipboardData && window.clipboardData.getData ?
        window.clipboardData.getData('Text') :                 // MS
        false;
    if(paste) {
        // ...
    }
};

1 Stimmen

Wenn nur Firefox dies unterstützen würde! Es ist sicher und ermöglicht den Zugriff auf die Zwischenablage.

1 Stimmen

Es gibt kein clipboardData-Mitglied in Chrome

8 Stimmen

Ich nehme es zurück - ich war mit JQuery Event-Bindung, so musste ich e.originalEvent.clipboardData verwenden

15voto

agsamek Punkte 8114

Haken für Online-Tabellenkalkulationen Ctrl + C , Ctrl + V Ereignisse und übertragen den Fokus auf ein ausgeblendetes TextArea-Steuerelement und setzen dessen Inhalt entweder auf den gewünschten neuen Inhalt der Zwischenablage zum Kopieren oder lesen dessen Inhalt, nachdem das Ereignis zum Einfügen beendet wurde.

0 Stimmen

Wie testet man auf "nach Beendigung des Ereignisses für Paste"?

1 Stimmen

Ich weiß es nicht. Aber da die gesamte Methode ist nicht ein Kunstwerk in sowieso würde ich für 1 Sekunde schlafen ;)

3 Stimmen

Wir haben gerade (dank des obigen Kommentars zur Inspiration) etwas Ähnliches in CodeMirror hinzugefügt ( marijn.haverbeke.nl/codemirror ). Es lauscht auf onbeforepaste, erstellt eine Textarea, fokussiert sie, schläft 10 Millisekunden, holt sich den Inhalt, entfernt die Textarea, gibt den Fokus zurück, wo er vorher war, und hat seine schmutzige Art mit dem eingefügten Text. Funktioniert nur im IE zuverlässig. Indem man auf das Drücken von ctrl-V (und command-V) reagiert, kann man es auch in FF und vielleicht einigen anderen Browsern zum Laufen bringen.

2voto

scunliffe Punkte 60080

NEIN. Und wenn Sie einen Hack finden (z.B. eine alte Version von Flash), verlassen Sie sich nicht darauf.

Darf ich fragen, warum Sie aus der Zwischenablage lesen wollen? Wenn der Benutzer den Inhalt der Zwischenablage weitergeben möchte, muss er nur einfügen.

2 Stimmen

Ich lese die Zwischenablage auf das Onpaste-Ereignis (in IE), um ungültige Zeichen herauszufiltern (z. B. um Leerzeichen aus einem Integer-Wert zu entfernen).

12 Stimmen

Onchange auf dem Feld verwenden, in das sie eingefügt werden?

1 Stimmen

Nun, dieser Beitrag ist 7 Jahre alt. Ich möchte nur die Information an alle weitergeben, die später kommen, dass die Midas-Demo @ Mozilla zeigt Ihnen, wie Sie die Zwischenablage lesen können: www-archive.mozilla.org/editor/midasdemo NO FLASH. Ich habe es mit einer Wikipedia-Zeile versucht - die Ergebnisse waren fantastisch.

1voto

Kim Punkte 1390

Auf Anregung von @agsamek habe ich einen kleinen Test erstellt und ihn zum Laufen gebracht. In meinem Fall muss ich nach einem neuen pageload für eingefügte Eingabe warten, so dass ich auf eine Out-of-View-Textarea konzentrieren und lesen Sie den Text von dort.

Sie könnten dies erweitern, um auf bestimmte Tasten (Einfügekombinationen) zu hören und sich dann auf das ausgeblendete Feld zu konzentrieren. Es wäre definitiv mehr Arbeit zu tun, da ich denke, Sie müssen dann auf das letzte fokussierte Element neu fokussieren und Inhalte dort einfügen.

Für meinen Anwendungsfall reichte das aber aus, damit es in den aktuellen Browsern Chrome und Firefox funktioniert. Vorschläge sind willkommen.

https://jsfiddle.net/wuestkamp/91dxjv7s/11/

$(function () {

    $('body').prepend('<input type="text" id="hidden_textbox" style="position: absolute; width:0px; height: 0px; top: -100px; left: -100px">');

    var $hiddenTextbox = $('#hidden_textbox');
    $hiddenTextbox.focus();

    $(document).on('paste', function () {
        setTimeout(function () {
            var val = $hiddenTextbox.val();

            console.log('pasted: ' + val);

        }, 50);

    });

});

1voto

Nick Berardi Punkte 53415

Ich glaube, man verwendet ein verstecktes Flash-Element, um die Daten aus der Zwischenablage der von Ihnen genannten Browser zu lesen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X