2013-01-22 19 views
10

Sto usando javascript sotto menzionato per copiare il testo negli appunti. Funziona in IE, ma non funziona in Firefox e Chrome.copia negli appunti - non funziona in FF, Chrome

Si prega di me, Cosa c'è che non va?

function setDataToclipboard() 
{ 

var str=document.getElementById("populatedString").value; 

if (window.clipboardData && clipboardData.setData) { 
    clipboardData.setData("Text", str); 
    alert("Copied!"); 
} 
} 

risposta

7

Penso che window.clipboardData sia solo IE. L'accesso agli Appunti è un problema di sicurezza e quindi non può essere fatto facilmente in FF o Chrome.

Si prega di vedere questa discussione: non How do I copy to the clipboard in JavaScript?

10

La manipolazione clipboard è cross-browser. Per la soluzione cross-browser è necessario il flash.

Guardate questa libreria https://github.com/jonrohan/ZeroClipboard

È possibile utilizzare ZeroClipboard come questo:

<button id="my-button" data-clipboard-text="Copy me!">Copy to Clipboard</button> 
<script> 
    var clip = new ZeroClipboard(document.getElementById('my-button')); 
</script> 

Quando si fa clic sul pulsante il testo Copy me! sarà messo negli appunti.

Per ulteriori istruzioni controllare API della biblioteca https://github.com/jonrohan/ZeroClipboard/blob/master/docs/instructions.md

+2

E se cb non è un problema? Voglio una soluzione non flash solo su Chrome, dal momento che il mio posto di lavoro è abbastanza intelligente da usare solo il meglio. – SpYk3HH

5

Vedi the documentation for clipboardData, in particolare la sezione che legge:

Non ci sono norme che si applicano qui.

Si sta utilizzando gubbin Microsoft proprietari, quindi non ci si deve aspettare che funzioni su altri browser.

Vedere this question per le tecniche cross-browser per accedere agli Appunti.

C'è a draft of a standard for accessing the clipboard ma non sono a conoscenza di eventuali implementazioni in natura (e canIuse doesn't know of any either).

3

Ho avuto questo stesso problema con Chrome e altri browser di recente. Tuttavia, recentemente, ho trovato questo codice funziona in un campo contenteditable in alcuni browser:

clipboard = e.originalEvent.clipboardData; 
clipboard.setData('text/plain', plainData); 
clipboard.setData('text/html', htmlData); 

NOTA: e in questo caso è la copia e/o evento tagliare. Questo evento si attiva e può essere richiamato in un'azione onCopy() o onCut().

Questo codice è confermato a lavorare nelle versioni più recenti dei seguenti browser:

  • Chrome (PC/Mac e Android)
  • Android 4.4+ WebView (a patto che si aggiorna dal Play Store) -> una buona notizia per (solo per Mac) Devs Android
  • Firefox
  • Safari

Internet Explorer sembra funzionare con window.clipboardData.setData invece, ma tenere tenere presente che gli Appunti IE accettano solo i dati 'text' e 'url'.

Mentre i seguenti browser possono accedere all'oggetto sistema di appunti, questi sono in grado di impostare i dati nella clipboard usando clipboard.setData:

  • MS bordo
    • dà un oggetto UntrustedDragDrop negli appunti invece ..
    • Inoltre, setData restituisce true ... quando non funziona. ritorna setData undefined in tutti gli altri browser
  • Android WebView -> sotto 4,4
  • iOS Safari e WebView - yay iOS!
Problemi correlati