Frage

Ich habe eine HTML-Seite, auf dieser Seite gibt es einige Bilder, wenn der Benutzer klickt auf eines dieser Bilder, ein anderes Bild, um es ersetzt.

<img style="cursor:hand" src="../_Img/click_me.png" onclick="ChangePic();">

Die ChangePic () Funktion:

function ChangePic() {
var el = event.srcElement;
el.src = '../_Img/Clicked.png';}

Ich habe auch ein Etikett auf der Seite, die die aktuelle Aktion dispalys, z.B. Move / Rechtsklick / Linksklick / Double Click.

In meinem onload der HTML-Seite, ich habe:

onmousemove="ShowAction('Move');" onmousedown="ShowKeysDown('Left','Middle','Right','click');"

anzeigen Aktion ändert einfach das Etikett. Die ShowKeysDown prüft, welche Schaltfläche geklickt wurde, dann ruft showaction. (Die Saiten in diesem Aufruf sind für mehrsprachige Unterstützung)

Problem das ich habe, ist, dass, wenn ein Benutzer auf dem Bild mit einem einzigen linken Mausklick klickt, korrekt das Bild ändert, wird das Etikett für einen Bruchteil einer Sekunde zu ‚Linksklick‘ chaged, dann wechselt sie in ‚Move "obwohl kein Bewegungsstattgefunden hat. Ich dachte, dass es könnte sein, dass ein einzelner Klick auf ein Bild, als Beginn eines Drag & Drop-Verfahren angesehen wird, aber ich bin nicht sicher.

Edit: Wenn ein Benutzer klickt nicht auf einem Bild, und nur in einigen zufälligen Leerzeichen, wird das Etikett korrekt als ‚Linksklick‘ angezeigt, bis sie die Cursor zu bewegen, dann wechselt sie in ‚Move‘. Dies ist die behavour Ich mag würde, wenn auf die Bilder klicken.

Vielen Dank für Ihre Zeit.

Hinweis: Dies muss nur im Internet Explorer arbeiten, wie es einen Teil eines HTMLDialog in mfc ist.

War es hilfreich?

Lösung

Ich nehme an, dass das folgende Ereignis geschieht durch Interaktion mit dem Benutzer:

  1. Benutzer bewegt die Maus über das Bild - onmousemove - zeigt 'Move' auf dem Etikett
  2. Benutzer klickt auf dem Bild (linke Maustaste klicken) - onmousedown - diaplsya 'Linksklick' auf dem Etikett
  3. Benutzer bewegt die Maus aus dem Bild - onmousemove - zeigt ‚Move‘ auf dem Etikett

Die onmousemove wird Feuer selbst Benutzer die Maus nur ein Pixel auf dem Bild.

So ist die Lösung für Ihr Problem wäre:

  1. Haben Sie eine globale Flag
  2. Stellen Sie es in den Event-Handler von onmousedown
  3. Überprüfen Sie, dass die Flagge in Ereignishandler von onmousemove, wenn es dann nicht gesetzt ist angezeigt ‚Move‘ auf dem Etikett und wenn es gesetzt ist, dann nichts tun
  4. Haben Sie eine Veranstaltung hanlder von onmouseout, setzen Sie das Flag in diesem Ereignishandler, so wieder, wenn onMouseMove Feuer, wird die Flagge überprüfen und, da sie nicht durch Click-Ereignis festgelegt wurde, wird onmousemove auf dem Etikett ‚Move‘ anzuzeigen.

Hope das ist, was Sie als Verhalten gesucht !!!

Andere Tipps

mich korrigieren, wenn ich falsch ... aber Sie sind mit dem onmousemove Ereignisse .. Ist das nicht das Verhalten, das Sie absolut normal sind zu erleben?

Es ist fast unmöglich, ein Objekt zu klicken, ohne das mousemove- Ereignis zu bekommen ... Sie müssen es irgendwie filtern - wie-wenn der Umzug zu klein ignorieren ist ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top