Ist es möglich, die Zwischenablage in Firefox, Safari und Chrome mit Javascript zu lesen?
-
04-07-2019 - |
Frage
Ich versuche, den Inhalt der Zwischenablage mit Javascript zu lesen. Mit dem Internet Explorer ist es möglich, die Funktion mit
window.clipboardData.getData("Text")
Gibt es eine ähnliche Art und Weise über die Zwischenablage in Firefox, Safari und Chrome lesen?
Lösung
Safari unterstützt die Zwischenablage während onpaste
Ereignisse zu lesen:
Sie wollen etwas tun:
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) {
// ...
}
};
Andere Tipps
Online-Tabellen Haken Strg + C, Strg + V Ereignisse und Transfer Fokus auf ein verstecktes Textarea-Steuerelement und entweder setzen Sie Inhalte auf dem gewünschten neuen Inhalt der Zwischenablage zu kopieren oder lesen Sie dessen Inhalt nach dem Ereignisse für Paste beendet hatte.
NO. Und wenn Sie einen Hack zu tun finden (zum Beispiel alte Version des Flash) hängt nicht von ihm.
Darf ich fragen, warum Sie aus der Zwischenablage lesen? Wenn der Benutzer auf den Inhalt der Zwischenablage zu übergeben will, alles, was sie tun müssen, um Paste.
Ich glaube, die Menschen ein verstecktes Flash-Element verwenden, um die Daten aus der Zwischenablage von den Browsern lesen Sie genannt haben.
Mit @agsamek Vorschlag habe ich einen kleinen Test snipped und bekam es zu arbeiten. In meinem Fall muß ich nach einer frischen Pageload für klebte Eingabe warten, so konzentriere ich mich auf einem Out-of-View-Textbereich und lesen Sie den Text von dort aus.
Sie können diese erweitern, um bestimmte Tasten (Paste-Kombination) und konzentrieren uns dann auf dem verborgenen Bereich zu hören. Es würde auf jeden Fall mehr Arbeit getan werden, wie ich glaube, Sie müssen erneut Fokus dann auf dem letzten fokussierten Element und fügen Sie Inhalte dort.
Für meinen Anwendungsfall obwohl dies genug war, um es in neuestem Chrome und Firefox funktioniert. Vorschläge 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);
});
});