seboeh: probleme mit onmouseup-event

Beitrag lesen

Hi Da ich auch immer probleme habe mit den events, habe ich mir den Code  mal zu Gemühte geführt.

hier der vereinfachte quellcode zum ausprobieren:

<html>
<head>
<script type="text/javascript">
<!--
function MakeArray(size, initvalue){
for(var i = 0; i < size; i++){
this[i] = initvalue;
}
}
function MakeArray2Dim(col, row, initvalue){
for(var i = 0; i < col; i++){
this[i] = new MakeArray(row, initvalue);
}
}

function changeBut(nr, butSrc1, butSrc2)
{
if(butSrc2 == "")
{
OverviewBut[nr].src=butSrc1;
}
else
{
if(eval("but"+nr+"_active == true"))
{
OverviewBut[nr].src=butSrc2;
}
else
{
OverviewBut[nr].src=butSrc1;
}
}
}

Die obige funktion lässt sich wohl vereinfachen (nicht ausprobiert)

function changeBut(nr, butSrc1, butSrc2)
{
if ((butSrc2 == "") && (eval("but"+nr+"_active") == true))
{
OverviewBut[nr].src = butSrc2;
}
else
{
OverviewBut[nr].src = butSrc1;
}
}

var OverviewBut = new MakeArray(50, "");

(var OverviewBut - könnte auch vor fkt.- changeBut stehen)

var but1_1 = "images/nav/buttons/ger/button1_norm.gif";
var but1_2 = "images/nav/buttons/ger/button1_acti.gif";
var but1_3 = "images/nav/buttons/ger/button1_over.gif";
var but1_4 = "images/nav/buttons/ger/button1_down.gif";
var but1_active = true

(? was ist mit var but2_active ... ich nehem an den Teil haste rausgeschnitten. Hinweis: es kann eine Variable erst in einer Bedingung verwendet werden, wenn sie schon vorher initalisiert wurde

  • ich meine den konflikt mit dem eval("but"+nr+"_active"), wenn nr=2)

//-->
</script>
</head>
<body>
<img src="images/nav/buttons/ger/button1_norm.gif" width="1" height="1" border="0" alt

(hier müsste noch das alt-attribut verfollständigt werden)
 style="position:absolute;top:0px;left:0px;">

<img src="images/nav/buttons/ger/button1_acti.gif" width="1" height="1" border="0" alt style="position:absolute;top:0px;left:0px;">
<img src="images/nav/buttons/ger/button1_over.gif" width="1" height="1" border="0" alt style="position:absolute;top:0px;left:0px;">
<img src="images/nav/buttons/ger/button1_down.gif" width="1" height="1" border="0" alt style="position:absolute;top:0px;left:0px;">
<a href="javascript:void(0)" onFocus="if(this.blur)this.blur()" onMouseover="changeBut(1, but1_3, '')" onMouseout="changeBut(1, but1_1, but1_2)" onMousedown="changeBut(1, but1_4, '')" onMouseup="changeBut(1, but1_1, but1_2)">

Das onfocus event verstehe ich nicht. Was führ ein Sinn hat es beim focusieren eines Objektes abzufragen, ob es verlassen wurde (wo es doch erst focusiert wurde). und nach der Abfrage auch noch ein verlassen ereigniss zu schicken. - Vieleicht ist das die Wurzel des Übels :-)

<img SRC="images/nav/buttons/ger/button1_acti.gif" border="0" onload="OverviewBut[1]=this" WIDTH="169" HEIGHT="31">
</a>
</body>
</html>

wenn ich das obere href dur dashier ersetze, geht der mouseup-event auch nicht. es liegt also nicht an der konstruktion mit dem array.
<a href="javascript:void(0)" onMousedown="document.images['bild1'].src=but1_4" onMouseup="document.images['bild1'].src=but1_1" onMouseover="document.images['bild1'].src=but1_3" onMouseout="document.images['bild1'].src=but1_1">
<img name="bild1" SRC="images/nav/buttons/ger/button1_acti.gif" border="0" WIDTH="169" HEIGHT="31">
</a>

Im grossen und ganzen kann ich leider nicht sagen woran der eigentlich oben beschriebene Fehler liegt ( habe es auch nicht ausprobiert)
Doch vieleicht ghört es ja zu einer ähnlichen kategorie wie ich es auch schon mal erlebt habe. Dass in dem Moment eines mouseover auch ein mouseout ereibniss geschieht, da der browser den Grenzfall nicht richtig erkennt. Dh. am rande eines Bildes weis der browser nicht ob die maus nun gerad ins bild oder aus dem bild kommt, also ob es ein mosueover oder mouseout ist. genaus veileicht auch, ob es ein focus oder blur ist.
Ich neheme an das dies mit "onfocus="if(this.blur) this.blur();""
gelösst werden soll. Ob es eine Lösung ist bin ich mir nicht sicher. Zudem wird in diesem Quellcode kein onblur verwendet. sollte es egal sein, ob das onblur ereigniss geschieht.
Vieleicht irre ich mich auch.

auf gute Zusammenarbeit
seboeh