Vi è mai capitato di notare quando fate copia-incolla da un sito una frase simile a: continua su … con i link all’articolo che state citando? Se volete realizzare qualcosa di similare questo articolo fa al caso vostro.
Il principio su cui si basa lo script è piuttosto elementare. Per prima cosa andiamo ad aggiungere un listener js che “ascolta” quando un utente procede a copiare qualcosa dal nostro sito e ci colleghiamo una funzione per fare la nostra azione.
document.addEventListener('copy', copyShadow); // Listener
Una volta fatto questo passaggio andiamo a recuperare il valore che l’utente ha copiato (nel nostro caso si tratta di testo).
var selection = window.getSelection();
A questo punto andiamo a creare un div nascosto (sempre con javascript) e ci salviamo dentro il testo che l’utente voleva copiare corredato dalla frase che più ci aggrada – come ad esempio: Credits : [URL DEL SITO DINAMICO].
//Nascondo il div helper newdiv.style.position = 'absolute'; newdiv.style.left = '-99999px'; //inserisco e popolo il div e setto la selezione con il nuovo div document.body.appendChild(newdiv);
A questo punto andiamo a sostituire nella memoria con il nuovo testo che contiene la nostra frase.
newdiv.innerHTML = copytext; selection.selectAllChildren(newdiv);
Il passaggio finale è eliminare in modo automatizzato il div “ombra” che abbiamo creato per il nostro giochetto.
//Cleanup Helper Div
window.setTimeout(function () {
console.log("Rimuovi Helper Copy");
document.body.removeChild(newdiv);
}, 100);
Codice completo dello script
Ecco il codice completo pronto all’uso:
<script>
function copyShadow() {
console.log("Trigger Helper copy");
//Identifico parte copiata e costruisco div
var selection = window.getSelection(),
pagelink = '<br /> <br />Leggi su: ' + document.location.href,
copytext = selection + pagelink,
newdiv = document.createElement('div');
//Nascondo il div helper
newdiv.style.position = 'absolute';
newdiv.style.left = '-99999px';
//inserisco e popolo il div e setto la selezione con il nuovo div
document.body.appendChild(newdiv);
newdiv.innerHTML = copytext;
selection.selectAllChildren(newdiv);
//Cleanup Helper Div
window.setTimeout(function () {
console.log("Rimuovi Helper Copy");
document.body.removeChild(newdiv);
}, 100);
}//copyShadow
document.addEventListener('copy', copyShadow); // Listener
</script>
Se questo articolo ti è stato utile ricordati di condividerlo o lasciarmi il tuo commento!
Foto disponibile su Shutterstock





