// über diesen Sinn muss ich noch studieren
// evt.cancelBubble = true;
// evt.returnValue = false;Nimm mal ein Bild und verschiebe das im Firefox (zusätzlich sollte in der Seite noch Text vorhanden sein), dann siehst du das Problem. Um das zu lösen brauchst du am Ende der onmousemove Funktion folgenden Code:
if(evt && evt.preventDefault) evt.preventDefault()
return false;
Hallo Struppi
Hier meine testergebnisse.
Ich habe mit meinem ursprünglichen Code ein <img> zu behandeln versucht.
Das Verhalten zeigt sich wie folgt:
onmousedown initiert. Aber solange ich die Mouse drücke und sie bewege, bewegt sich das Bild nicht. erst wenn ich die Maus loslasse stottert das Bild nach.
Nun habe ich den Code minimal erweitert wie folgt.
~~~javascript
gui.cat.onmouseup = function(evt){
document.onmousemove = null;
}
gui.cat.onmousedown = function(evt){
// Dein Tipp
if(evt && evt.preventDefault) evt.preventDefault();
// kein Unterschied in der Wirkung mit oder ohne...
// evt.returnValue = false;
var offx = evt.clientX - gui.cat.offsetLeft;
var offy = evt.clientY - gui.cat.offsetTop;
document.onmousemove = function foo (evt){
gui.cat.style.left = evt.clientX - offx + "px";
gui.cat.style.top = evt.clientY - offy + "px";
}
};
So ergibt sich das normale Verhalten.
Jedoch ist mir im Moment gänzlich schleierhaft, was abgeht.
// evt.returnValue = false;
erweist sich hier als unnötig.
Übrigens ist dein Hinweis auf eine Umgebung mit Text hier nicht ganz schlüssig, weil das zu bewegende Objekt sowieso position fixed oder absolute haben muss.
Ich frage mich, ob es mit dem Typ inline-replaced Element zusammenhängt.
Ein text mit einem Formular hingegen hat nicht den dem <im> ähnlichen Fehler gezeigt.
Danke mal für den Tipp.
mfg Beat