SECURITY_ERR: DOM Exception 18 beim Aufruf der toDataURL-Methode des Canvas

8

Beim Versuch, die Daten-URL von einer Zeichenfläche abzurufen, auf der in Internet Explorer- und Safari-Browsern ein SVG-Bild gezeichnet wird, während die anderen ordnungsgemäß funktionieren, wird der folgende Fehler angezeigt.

Außerdem enthält das SVG-Bild einige <image> -Elemente, deren xlink:href -Attribute auf Bilder gesetzt sind, die als Daten-URLs vom Dateisystem des Benutzers gelesen werden. Da sich diese Bilder nicht in verschiedenen Domänen befinden, konnte ich mir keinen Grund vorstellen, warum dieser Fehler beim Abrufen der dataURL der Zeichenfläche, auf der das SVG-Bild gezeichnet wurde, angezeigt wird. Vielen Dank im Voraus.

  

SECURITY_ERR: DOM Ausnahme 18: Es wurde versucht, durchzubrechen   die Sicherheitsrichtlinie des Benutzeragenten. "

    
sarslanhan 17.02.2014, 13:00
quelle

2 Antworten

4

Ich kann dieses Problem in Internet Explorer 11 anhand eines von mir erstellten Testfalls bestätigen:
Ссылка

Dies ist eine bekannte Einschränkung des Internet Explorers, an der Microsoft arbeitet:
Ссылка

Wie in dem Fehlerbericht gezeigt, jedes SVG-Bild, das in eine Zeichenfläche gezeichnet wird, wird die Zeichenfläche beschädigt, was zu einem SecurityError führt, wenn toDataURL () aufgerufen wird.

Für was es sich lohnt, funktioniert der Testfall des Fehlerberichts nicht in Safari 7.0.5 , entweder (Apple hat das Problem angeblich in Safari 8 behoben). Außerdem funktioniert der Testfall in Firefox bis Version 11 nicht, da Fehler 672013 - SVG-als-ein-Bild erlauben in eine Leinwand gezeichnet werden, ohne sie als schreibgeschützt zu markieren .

    
Cadence Marseille 27.07.2014 00:27
quelle
1

Es scheint, dass Ihre SVGs die Sicherheitsrichtlinie verletzen, obwohl sie dies nicht sollten.

Eine mögliche Lösung wäre die Verwendung von canvg , die SVG analysiert und direkt auf der Zeichenfläche rendert.

Wenn Sie den SVG-Text haben, fügt canvg eine drawSvg -Methode hinzu, die genauso funktioniert wie drawImage . Beispiel:

%Vor%     
Scott Rippey 29.07.2014 05:09
quelle