Ich habe gerade eine SVG-Karte von Neuseeland für die Verwendung mit der ausgezeichneten Javascript-Bibliothek Raphael gebaut, aber leider sind gestolpert, was ich nur vorstellen kann, ist ein Bug oder syntaktische Variation in Der Javascript-Interpreter von IE.Ereignisse arbeiten in Firefox/Chrome, aber scheitern in IE
In Firefox und anderen Browsern funktionieren die onlick und onmouseover Ereignisse perfekt - aber sie feuern nicht in IE (getestet in IE 7). Leider gibt es keinen JavaScript-Fehler, der mir hilft, dies zu debuggen. Daher kann ich nur annehmen, dass der IE diese Ereignisse auf eine grundlegend andere Weise behandelt.
<script type="text/javascript" charset="utf-8">
window.onload = function() {
var R = Raphael("paper", 450, 600);
var attr = {
fill: "#3f3f40",
stroke: "#666",
"stroke-width": 1,
"stroke-linejoin": "round"
};
var nz = {};
nz.northland = R.path(attr, "M 193.34222,3.7847503 C 194.65463");
// SVG data stripped for sake of brevity
var current = null;
for (var region in nz) {
nz[region].color = Raphael.getColor();
(function(rg, region) {
rg[0].style.cursor = "pointer";
rg[0].onmouseover = function() {
current && nz[current].animate({ fill: "#3f3f40", stroke: "#666" }, 500) && (document.getElementById(current).style.display = "");
rg.animate({ fill: rg.color, stroke: "#ccc" }, 500);
rg.toFront();
R.safari();
document.getElementById(region).style.display = "block";
current = region;
};
rg[0].onclick = function() {
alert("IE never gets this far.");
//window.location.href = "my-page.aspx?District=" + region;
};
rg[0].onmouseout = function() {
rg.animate({ fill: "#3f3f40", stroke: "#666" }, 500);
};
if (region == "northland") {
rg[0].onmouseover();
}
})(nz[region], region);
}
};
</script>
Vielen Dank :)
Sie könnten viele Probleme wie dieses vermeiden, indem Sie einfach ein Framework übernehmen, das die Cross-Browser-Probleme für Sie gelöst hat, wie jQuery, dojo, mootools oder prototype/scriptaculous . – tvanfosson
Guter Vorschlag - eindeutig eine gute Zeit, um meine Jquery-Fu zu verbessern. Danke :) –
Das ist ein spezieller Fall: Sie suchen nach Event-Unterstützung für SVG-Elemente. Dies ist nicht dasselbe wie Cross-Browser-Ereignisunterstützung für Standard-HTML-Elemente. Es kann nur sein (ich habe nicht überprüft), dass IE die mousedown- und mouseup-Ereignisse auf einem SVG-Element nicht unterstützt. –