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?
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?
Antworten:
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.
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)
setTimeout
und dann wieder auf die Seite klicken.
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
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();
});