2013-02-21 18 views
6

Voglio scrivere alcuni dati in clipborad da un'estensione di cromo che sto creando. Nel file manifest ho dato i permessi ad entrambi gli appunti Lettura e appuntiWrite.perché document.execCommand ("copia") non funziona nello script di contenuto della mia estensione chrome?

Io uso questa funzione che ho trovato here

ma non funziona. sembra che "document.execCommand ('copy');" non può funzionare

Scrivo tutti questi codici nello script di contenuto.

thx manifestare:

{ 
    "manifest_version":2, 

    "name":"easyCopy", 
    "description":"just a small toll", 
    "version":"1.0.0", 

    "permissions":[ 
     "clipboardWrite", "http://*/*", "clipboardRead" 
    ], 

    "content_scripts":[ 
     { 
      "matches":["http://*/*"], 
      "js":["jquery-1.9.1.min.js", "main_feature.js"] 
     } 
    ], 

    "background":{ 
     "persistent":false, 
     "page":"background.html" 
    } 
} 

main_feature.js:

copyOrderId(); 
function copyOrderId() { 
    $(".order-num").click(function() { 
     var curOrderNum = $(this).text(); 
     copyTextToClipboard(curOrderNum); 
//  chrome.extension.sendMessage({method:"copy", content:curOrderNum}, function (response) { 
//   clog(response); 
//  }); 
    }); 


} 

function copyTextToClipboard(text) { 
    var copyFrom = $('<textarea/>'); 
    copyFrom.text(text); 
    $('body').append(copyFrom); 
    copyFrom.select(); 
    document.execCommand('copy', true); 
    copyFrom.remove(); 

} 
function clog(message) { 
    console.log(message); 
} 

il background.html è solo una pagina vuota con il corpo HTML di base.

+1

Condividi il tuo codice completo completo, incluso manifest ecc – Sudarshan

+0

thx, ho modificato la mia domanda e li ho condivisi tutti –

risposta

8

Grazie a tutti, ho finito per usare questo:

document.execCommand non può funzionare nello script contenuti. Invece, invio i dati alla pagina di sfondo e quindi eseguo la funzione "copyTextToClipboard".

Si noti che è necessario inserire il codice JavaScript in un unico file .js anziché miscelarlo con background.html.

Inoltre, la textarea deve avere una proprietà id o class.

+0

puoi chiarire ulteriormente? se definisco un campo nascosto nel mio file js basato su script di contenuto, posso accedere al suo valore in background a scopo di copia? – Volatil3

+0

@ Volatil3: Siamo spiacenti, non ho visto il tuo commento. Definisci un campo nascosto nello sfondo, quindi puoi copiarlo. se vuoi copiare qualsiasi cosa nello script di contenuto, devi inviare i dati allo sfondo con l'API di MessagePassing di chrome. –

+0

Questo errore è stato risolto in Chrome 39: consultare https://code.google.com/p/chromium/issues/detail?id=395376 –

Problemi correlati