2013-04-25 9 views
7

Mam problem z moją implementacją JavaScript. Skrypt będzie działał w przeglądarce Firefox, ale w Chrome jest napisane:Pojawił się błąd "Canvas został zanieczyszczony" w Chrome, ale nie w 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 

Czy ktoś ma pojęcie, jaka może być przyczyna takiego niespójnego zachowania?

+1

Obraz zostanie uznany za "skażony", jeśli obraz pochodzi z innej domeny niż strona główna. Nie publikujesz adresów URL obrazków, więc nie możesz dokładnie powiedzieć, co się z tobą dzieje. – Pointy

+2

Dzięki Pointy. Adresy URL to tylko lokalne nazwy plików, ponieważ pliki obrazów znajdują się w tym samym folderze co plik indeksu. Dziwne jest jednak to, że działa bez problemu w Firefoksie, ale Chrome przestał nękać. – AndroidHustle

Odpowiedz

7

Chrome nie bierze pod uwagę różnych plików lokalnych pochodzących z tej samej domeny. Oznacza to, że każdy plik lokalny, do którego odwołujesz się za pomocą adresu URL, jest traktowany tak, jakby pochodził z unikalnej domeny oddzielnej od domeny innych adresów URL z adresem URL: file://. To, że znajdują się w tym samym katalogu, nie ma znaczenia.

Możesz uruchomić Chrome z opcją ("--allow-file-access-from-files" Myślę, że), która mówi, że traktuje pliki lokalne, ponieważ wszystkie są ze wspólnej domeny.

+0

dzięki za twój wkład! Znalazłem [ten post] (http://stackoverflow.com/questions/9972049/cross-origin-data-in-html5-canvas) na podstawie tego, co napisałeś. Muszę jednak przyznać, że nie jestem całkiem pewien, jak należy sformatować URL ... (Nie jestem w tym dobry). Adres URL, który teraz uruchomię: ** file: /// C: /Users/Max/Dropbox/Web%20projekt/Shalette/index.html**. Jak to zmienić? Próba wstawienia: ** http: // localhost // C: /Users/Max/Dropbox/Web%20projekt/Shalette/index.html** rozpoczyna proces w konsoli Chrome i niewiele więcej. Wszelkie informacje, które możesz mi podać, są bardzo cenne! – AndroidHustle

+1

@AndroidHustle Albo musisz użyć flagi wiersza poleceń '--allow-file-access-from-files', albo twoja zawartość musi być obsługiwana z serwera WWW przez HTTP używając' http: '(lub' https: ') schemat. – apsillers

+0

@apsillers Dzięki, przepraszam, ale muszę zapytać, gdzie jest ta linia poleceń? Nie widzę niczego, jak otworzyć go w Chrome, gdy go szukam. Poza tym nie widzę niczego, co wygląda jak wiersz poleceń w Chrome, gdy patrzę w konsolę. – AndroidHustle

Powiązane problemy