Esistono nuove soluzioni per copiare più gruppi di testo negli Appunti tramite JavaScript / Flash, da Flash 10?

StackOverflow https://stackoverflow.com/questions/445604

Domanda

Da quando è stato introdotto Flash 10, molti dei più famosi script "copia negli Appunti" in circolazione hanno smesso di funzionare a causa di nuove restrizioni di sicurezza. C'è una soluzione solo Flash qui:

http: //cfruss.blogspot .com / 2009/01 / copy-to-clipboard-swf-button-cross.html

... anche se sto cercando la possibilità di attivare la funzione di copia tramite JS, piuttosto che fare affidamento sull'utente per fare clic su un oggetto Flash per attivare.

Per un esempio di ciò che attualmente impieghiamo, vedi:

http://snipt.net/public

Qualsiasi collegamento 'copia' usa il plugin di copia di jQuery qui:

http://plugins.jquery.com/project/copy

AGGIORNAMENTO: OK, quindi ho provato ZeroClipboard. A prima vista, sembrava fantastico. Tuttavia, la quantità di codice ridondante necessario per abilitare più associazioni di appunti è inaccettabile . In alcuni casi, ci saranno oltre 40 istanze di testo ognuna con il proprio link "copia". Stai ancora cercando una soluzione migliore ...

È stato utile?

Soluzione

Questa è una notizia terribile, non avevo nemmeno notato. Uso ampiamente anche il trucco Flash. Per quanto ne so, era l'unico modo per far funzionare la copia senza dover installare altri plugin (oltre all'onnipresente Flash) a causa di problemi di sicurezza del browser.

Aggiornamento: dopo tanto panico e alcune ricerche su Google, mi sono imbattuto in http: // code .google.com / p / zeroclipboard / che fornisce un trucco compatibile con Flash 10 per far funzionare di nuovo la copia. Ora per andare in giro ad aggiornare i siti Web ...

Altri suggerimenti

Questa soluzione funziona solo per i tasti che invocano l'operazione desiderata. Funziona spostando il cursore dell'utente in un elemento textarea prima che l'utente completi la sequenza di tasti pertinente. Funziona solo per l'inserimento di testo. Ho funzionato in Firefox e Chrome. IE può usare l'oggetto clipboardData (che è preferibile a questo hack).

Nel tuo html da qualche parte dovresti creare un elemento textarea con righe e attributi cols arbitrariamente grandi. L'elemento " clipboard-textarea " sarà l'area di conservazione dei dati incollati e copiati. Nascondo l'elemento usando alcuni attributi di stile.

Lo script:

var desiredClipboardContents = 'It works';

function onCopyKeyPressed() {
   // The trick here is to populate the textarea with
   // the text you want copied before the user releases
   // the copy keystroke.
   var textarea = document.getElementById('clipboard-textarea');
   textarea.value = desiredClipboardContents;
   textarea.focus();
   textarea.select();
}

function onPasteKeyPressed() {
   var textarea = document.getElementById('clipboard-textarea');
   textarea.value = '';
   textarea.focus();
   // The trick here is to delay slurping the content
   // that arrives in the textarea element until after
   // the paste keystroke is completed. The 750 ms timeout
   // provides the necessary delay.
   setTimeout("finishedPasting", 750);
}

function finishedPasting() {
   var textarea = document.getElementById('clipboard-textarea');
   alert("Received from clipboard-paste: " + textarea.value);
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top