2013-04-25 8 views
7

Ho riscontrato un problema con la mia implementazione Javascript. Lo script verrà eseguito in Firefox, ma in Chrome si dice:Ottengo un errore "Canvas has been tainted" in Chrome ma non in FF

Unable to get image data from canvas because the canvas has been tainted by cross-origin data. index.html:1 
Uncaught Error: SecurityError: DOM Exception 18 

Qualcuno ha un'idea di quale sia la causa di tale comportamento incoerente potrebbe essere?

+1

La tela è considerata "macchiata" se l'immagine proviene da un dominio diverso rispetto alla pagina principale. Non hai pubblicato gli URL delle immagini, quindi è impossibile dire esattamente cosa ti sta succedendo. – Pointy

+2

Grazie a punta. Gli URL sono solo i nomi dei file locali, poiché i file di immagine si trovano nella stessa cartella del file di indice. La cosa strana però è che funziona senza problemi in Firefox, ma Chrome ha iniziato improvvisamente fastidioso. – AndroidHustle

risposta

7

Chrome non considera i diversi file locali provenienti dallo stesso dominio. Cioè, ogni file locale che fai riferimento tramite un URL file:// viene trattato come se provenisse da un dominio univoco separato da quello di altri URL file://. Che siano nella stessa directory non fa differenza.

È possibile avviare Chrome con un'opzione ("--allow-file-access-from-files" Penso) che indichi di trattare i file locali come se fossero tutti di un dominio comune.

+0

grazie per il tuo contributo! Ho trovato [questo post] (http://stackoverflow.com/questions/9972049/cross-origin-data-in-html5-canvas) in base a ciò che hai scritto. Devo ammettere però che non sono del tutto sicuro di come l'URL debba essere formattato ... (non sono molto bravo in questo). L'URL su cui corro ora: ** file: /// C: /Users/Max/Dropbox/Web%20projekt/Shalette/index.html**. Come dovrebbe essere corretto questo? Cercando di mettere: ** http: // localhost // C: /Users/Max/Dropbox/Web%20projekt/Shalette/index.html** avvia solo alcuni processi nella console di Chrome e non molto altro. Ogni informazione che puoi darmi è molto apprezzata! – AndroidHustle

+1

@AndroidHustle O devi usare il flag '--allow-file-access-from-files' da riga di comando, o il tuo contenuto deve essere servito da un server Web su HTTP usando' http: '(o' https: ') schema. – apsillers

+0

@apsillers Grazie, mi dispiace ma devo chiedere, dov'è questa riga di comando? Non vedo nulla su come aprirlo in Chrome quando lo cerco. Inoltre, non vedo nulla di simile a una riga di comando in Chrome quando guardo nella console. – AndroidHustle

Problemi correlati