Funzione/oggetto 'copia testo su clipboard'
Autore: Fabio B.Ciao a tutti,
nella mia pagina https://www.osteopathfabio.com/shop-recommended-items.html ho inserito un oggetto HTML per creare un testo con copy to clipboard, per facilitare il copia-incolla al di sotto di ogni prodotto per i quali ho il discount code.
Ho copiato questo codice HTML da un sito, ma non funziona:
<!-- The text field -->
<input type="text" value="BR_OSTEO_15" id="myInput">
<!-- The button used to copy the text -->
<button onclick="myFunction()">Copy text</button>
Pensavo dipendesse dal fatto che ho la protezione del codice HTML come opzione, ma anche rimuovendola non va.
Sicuramente la mia ignoranza in ambito HTML sta facendo da padrona
Qualche consiglio su come risolvere? Perchè non credo esista un oggetto dedicato a ciò...
Grazie a tutti
Segui le indicazioni qui, non è difficile:
https://www.byte-post.com/copiare-il-testo-negli-appunti-da-pulsante-funzioni-htmljs/
Autore
Grazie Patrizia,
ho letto la guida, ma ho inserito il codice Java nelle opzioni della pagina Shop (vedi foto), solo che non va. Sono certo ci sarà qualcosa che manca o che sbaglio. Ad esempio, nel file name format, non trovo js, ma solo jsp.
Ho letto che posso "integrare il codice JS in un file esterno", ma mi sono perso sul dove inserire il file formato .js e relativo path o URL.
Dimmi tranquillamente se pensi possa riuscirci
Grazie!
Metti il testo da copirare in un oggetto HTML
<textarea id="area">Ciao mondo!</textarea>
<button onclick="copia('area')">copia</button>
e al passo 3 in esperto della pagina, prima della chiusura del tag body, inserisci il codice con in tag javascript come di seguito:
<script type="text/javascript">
function copia(testo) {
var input = document.createElement('input');
var area = document.getElementById(testo).value;
input.setAttribute('value', area);
document.body.appendChild(input);
input.select();
var risultato = document.execCommand('copy');
document.body.removeChild(input);
alert('testo copiato: '+ area);
return risultato;
}
</script>
Come detto nell'articolo che ti ho postato sopra, se non vuoi il messaggio di Alert che dice che hai copiato, togli la penultima riga in grassetto.
Per ogni prodotto che vuoi copiare devi variare l'id, il primo è <textarea id="area"> il secondo puoi tranqulillamente chiamarlo <textarea id="area2"> il terzo <textarea id="area3"> e così via e richiamarli
<script type="text/javascript">
function copia(testo) {
var input = document.createElement('input');
var area = document.getElementById(testo).value;
input.setAttribute('value', area);
document.body.appendChild(input);
input.select();
var risultato = document.execCommand('copy');
document.body.removeChild(input);
alert('testo copiato: '+ area);
return risultato;
}
function copia(testo) {
var input = document.createElement('input');
var area2 = document.getElementById(testo).value;
input.setAttribute('value', area2);
document.body.appendChild(input);
input.select();
var risultato = document.execCommand('copy');
document.body.removeChild(input);
alert('testo copiato: '+ area2);
return risultato;
}
</script>
... rispetto a quanto hai riportato, ...nella tua pagina manca il JavaScript di controllo myFunction()...!..
..
Autore
Ciao KolAsim,
ti ringrazio, tuttavia, non so cosa intendi
Autore
Ciao Patrizia,
grazie infinite, tutto funzionante ora
Ho solo dovuto anche aggiornare anche la seconda riga dell'oggetto HTML, cioè l'id come dicevi, e anche quella nelle parentesi tonde:
<textarea id="area">Ciao mondo!</textarea>
<button onclick="copia('area')">copia</button>
Funziona tutto perfettamente!
Ultima cosa, anche se assolutamente non vitale: l'area di testo sembra avere una riga vuota in più al di sotto della riga di testo, vedi https://www.osteopathfabio.com/shop-recommended-items.html
Come posso toglierla?
Grazie ancora
Fabio
... dipende dalle istruzioni o ne fa parte di dove ne avevi prelevato il codice e che hai tralasciato...
... se posti il link della tua fonte si potrebbe capire; ...in teoria potrebbe essere qualcosa di molto simile alla fonte extra fornita da Patrizia...
ciao
.