Hallo Holger,
ich möchte ein svg-File einbinden, welches sich auf einem Netzlaufwerk unseres Fileservers befindet (Laufwerk m:). Mit älteren Versionen des IE's funktioniert das auch, allerdings weigert sich der IE9. Ich erhalte mehrere Skript-Fehler (SCRIPT5: Zugriff verweigert), z.B. bei:
var object = document.plan.getSVGDocument();
document.getElementById("plan").getSVGDocument() wirft den selben Fehler
Ich vermute, dass dies eine Sicherheitsfrage bezüglich des cross-domain-scriptings ist, allerdings befinden wir uns ja hier in unserem lokalen Intranet. Also wo ist das Häkchen im IE, welches ich setzen muss?
Kann ich leider nicht sagen (*), aber die Beobachtung bestätigen. Das folgende Beispiel funktioniert unter Vista erstaunlicherweise mit Opera 11.10 sowohl lokal als auch bei Netzwerkverknüpfung, im IE 9 und im FF 4.0.1 jedoch nur lokal (Ausgabe red):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Test</title>
</head>
<body onload="alert(document.getElementById('plan').getSVGDocument().getElementById('kreis').getAttribute('fill'))">
<div id="svgcontainer">
<object type="image/svg+xml" data="file:///X:/svgtest/test.svg" width="200" height="200" id="plan"></object>
</div>
</body>
</html>
test.svg:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg">
<circle id="kreis" cx="100" cy="100" r="30" fill="red"/>
</svg>
BTW: Bei den getesteten Browsern funktioniert statt getSVGDocument() auch contentDocument.
(*) Meine Idee, dem Netzwerk-Verzeichnis und allen Dateien darin den Vollzugriff für den Benutzer NETZWERK zuzuweisen, hat nichts gebracht. Seltsam ist ja, dass Opera der Zugriff gelingt.
Grüße,
Thomas