Drag And Drop über Frames
Sam
- xsl
Lieber bewahrer der Weisheit des Web,
ich habe folgendes Problem. Beim Ziehen und Ablegen von Bildern innerhalb eines Dokumentes funktioniert noch alles wunderbar. Dabei werden die Bilder nicht wirklich verschoben, sondern nur als Auslöser verwendet um über die Events MOUSEDOWN und MOUSEUP entsprechende Aktion auszuführen. Das selbe geht auch noch einwandfrei über Frames hinweg. Wenn jedoch ein Frame ein XML ist, welches über XSL in HTML dargestellt wird, so funktioniert das zumindest im Internet Exporer nichtmehr reibungsfrei. Da muss man dann bei dem besagten Frame immer mit hinein und heraus ziehen abwechseln. Mehrmals hintereinander in die selbe Richtung geht nicht. Innerhalb dieses Frame ist das aber kein Problem.
Um das zu veranschaulichen habe ich folgende Testkonfiguration in 6 Dateien geschaffen.
1. Frameset: start.htm
<html>
<head>
<title>Test F</title>
<script type="text/JScript"><!--
function Ausgabe(pText, w)
{
Erg.Erg.innerText = pText + " " + w.event.x + " Y=" + w.event.y + " : " + w.name + " : " + w.document.title + " : " + w.event.type + "!";
}
--></script>
</head>
<frameset rows="200,*">
<frame src="e.htm" name="Erg" />
<frameset cols="200,200,*">
<frame src="a.htm" name="A" />
<frame src="b.htm" name="B" />
<frame src="c.xml" name="C" />
</frameset>
</frameset>
</html>
2. Status und Ergebnis e.htm
<html>
<head>
<title>Test E</title>
</head>
<body>
<h1 id="Erg">Wenn man in den unteren 3 Spalten die Bilder hin und her zieht, dann wird der Event "MOUSEUP" fast immer ausgelassen wenn es mehrfach von oder in die recht Spalte (C) geht. Und wenn es geht dann nur einmal in die selbe Richtung. Dreht man die Richtung um geht es beim ersten Mal wieder. Die Linke (A) und Mittlere (B) unter sich oder innerhalb eines Frame (auch C) funktionieren immer.</h1>
</body>
</html>
3. Erste Spalte (Nur HTML) a.htm
<html>
<head>
<title>Test A</title>
</head>
<body>
<h1 unselectable="on"><img unselectable="on" id="A" onmouseup="parent.Ausgabe('UP', window)" onmousedown="parent.Ausgabe('Down', window)">Test A</h1>
</body>
</html>
4\. Zweite Spalte (Nur HTML) b.htm
<html>
<head>
<title>Test B</title>
</head>
<body>
<h1 unselectable="on"><img unselectable="on" id="B" onmouseup="parent.Ausgabe('UP', window)" onmousedown="parent.Ausgabe('Down', window)">Test B</h1>
</body>
</html>
5. Dritte Spalte (XML) c.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="c.xsl" ?>
<Test>YYY
</Test>
6. Die zugehörige XSL c.xsl
<?xml version="1.0" encoding="ISO-8859-1" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" media-type="text/html" indent="no" omit-xml-declaration="no" encoding="ISO-8859-1" />
<xsl:decimal-format name="de" decimal-separator="," grouping-separator="." />
<xsl:template match="Test">
<html>
<head>
<title>Test C</title>
</head>
<body>
<h1><img unselectable="on" id="C" onmouseup="parent.Ausgabe('UP', window)" onmousedown="parent.Ausgabe('Down', window)" />Test C</h1>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Wenn man nun die 6 Dateien in ein Verzeichnis kopiert und die Start.htm ausführt, so kann man das Problem leicht feststellen. Ich habe mit Internet Explorer 6 und 7 auf Windows 2000 und Windows XP immer die gleichen Ergebnisse erhalten.
Was läuft falsch, bzw. noch wichtiger: Wie kann ich das sauber in den Griff bekommen?
In Hoffnung auf Erleuchtung verbleibe ich Euer dankbarer
Sam