wake-up-neo.com

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 dies über die Funktion möglich

window.clipboardData.getData("Text")

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

30
Gil Faria

Safari unterstützt das Lesen der Zwischenablage bei onpaste-Ereignissen:

Information

Sie möchten 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) {
        // ...
    }
};
16
eyelidlessness

Online-Spreadsheets haken Strg + C-, Strg + V-Ereignisse ein, übertragen den Fokus auf ein ausgeblendetes TextArea-Steuerelement und legen den Inhalt entweder auf den gewünschten neuen Inhalt der Zwischenablage zum Kopieren fest oder lesen dessen Inhalt, nachdem das Ereignis zum Einfügen abgeschlossen wurde.

14
agsamek

NEIN. Und wenn Sie einen Hack finden (z. B. eine alte Flash-Version), hängen Sie nicht davon ab.

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

2
scunliffe

Ich glaube, die Leute benutzen ein verstecktes Flash-Element, um die Daten aus der Zwischenablage aus den von Ihnen erwähnten Browsern zu lesen.

1
Nick Berardi

Mit dem @agsamek-Vorschlag habe ich einen kleinen Testausschnitt erstellt und ihn zum Laufen gebracht. In meinem Fall muss ich nach einem neuen Seitenaufruf auf die eingefügte Eingabe warten, deshalb konzentriere ich mich auf einen Textbereich außerhalb des Sichtbereichs und lese den Text von dort aus.

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

Für meinen Anwendungsfall war dies jedoch ausreichend, damit es in den neuesten Versionen von 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);

    });

});
0
Kim