Wenn Sie lokal einen schnellen Code entwickeln und Chrome verwenden, liegt ein Problem vor. Wenn Ihre Seite unter Verwendung einer URL der Form "file: // xxxx" geladen wird, schlägt der Versuch, getImageData () auf der Zeichenfläche zu verwenden, fehl und löst den originalen Sicherheitsfehler aus, selbst wenn Ihr Bild von derselben abgerufen wird Verzeichnis auf Ihrem lokalen Computer als HTML-Seite, die die Zeichenfläche rendert. Wenn Ihre HTML-Seite abgerufen wird, sagen Sie:
file: // D: /wwwroot/mydir/mytestpage.html
und Ihre Javascript-Datei und Bilder werden abgerufen von beispielsweise:
file: // D: /wwwroot/mydir/mycode.js
file: // D: /wwwroot/mydir/myImage.png
Trotz der Tatsache, dass diese sekundären Entitäten vom selben Ursprung abgerufen werden, wird der Sicherheitsfehler immer noch ausgelöst.
Aus irgendeinem Grund setzt Chrome das Ursprungsattribut der erforderlichen Entitäten auf "null", anstatt den Ursprung richtig festzulegen. Dadurch ist es unmöglich, Code mit getImageData () zu testen, indem Sie einfach die HTML-Seite in Ihrem Browser öffnen und lokal debuggen.
Aus demselben Grund funktioniert es auch nicht, die Eigenschaft crossOrigin des Bildes auf "anonym" zu setzen.
Ich versuche immer noch, eine Problemumgehung dafür zu finden, aber es scheint wieder einmal, dass das lokale Debuggen von Browser-Implementierern so schmerzhaft wie möglich gemacht wird.
Ich habe gerade versucht, meinen Code in Firefox auszuführen, und Firefox macht es richtig, indem es erkennt, dass mein Bild vom selben Ursprung stammt wie die HTML- und JS-Skripte. Daher würde ich einige Hinweise begrüßen, wie Sie das Problem in Chrome umgehen können, da der Debugger im Moment, während Firefox funktioniert, schmerzlich langsam ist und einen Schritt von einem Denial-of-Service-Angriff entfernt ist.