Mi piacerebbe conoscere un modo per fare in modo che il mio script rilevi il contenuto degli appunti e lo incolli in un campo di testo quando la pagina viene aperta, senza input da parte dell'utente. Come si può fare?
Mi piacerebbe conoscere un modo per fare in modo che il mio script rilevi il contenuto degli appunti e lo incolli in un campo di testo quando la pagina viene aperta, senza input da parte dell'utente. Come si può fare?
Risposte:
window.clipboardData.getData('Text')
funzionerà in alcuni browser. Tuttavia, molti browser in cui funziona chiederanno all'utente se desidera o meno che la pagina web abbia accesso agli appunti.
Usa la nuova API degli appunti , tramite navigator.clipboard
. Può essere usato in questo modo:
navigator.clipboard.readText()
.then(text => {
console.log('Pasted content: ', text);
})
.catch(err => {
console.error('Failed to read clipboard contents: ', err);
});
O con sintassi asincrona:
const text = await navigator.clipboard.readText();
Tieni presente che questo richiederà all'utente una finestra di dialogo per la richiesta di autorizzazione, quindi non sono possibili affari divertenti.
(NOTA: questo non funzionerà se chiamato dalla console, ma richiederà un'azione diretta da parte dell'utente come la pressione di un pulsante, grazie @Artur)
setTimeout
, quindi facendo clic di nuovo sulla pagina.
Puoi usare
window.clipboardData.getData('Text')
per ottenere il contenuto degli appunti dell'utente in IE. Tuttavia, in altri browser potrebbe essere necessario utilizzare Flash per ottenere il contenuto, poiché non esiste un'interfaccia standard per accedere agli appunti. Forse puoi provare questo plugin Zero Clipboard
Di seguito ti fornirà il contenuto selezionato e aggiornerà gli appunti.
Associa l'id dell'elemento con l'evento di copia e quindi ottieni il testo selezionato. Potresti sostituire o modificare il testo. Prendi gli appunti e imposta il nuovo testo. Per ottenere la formattazione esatta è necessario impostare il tipo come "text / hmtl". Puoi anche associarlo al documento invece che all'elemento.
$(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();
});