Код в первом сообщении я привел как для примера.
В моем случае мне нужно было разделять эти события для управяления меню.
Меню можно переместить (события onmousedown, onmousemove, onmouseup) и свернуть развернуть (событие onclick/ondblclick).
И все это на одном элементе.
Вот пример решения проблемы который был приведен мной в первом сообшении:
var master = (function() {
// функция обработки события onDblClick
function mouseOnDblClick(){
alert('mouseClick');
return false;
}
// функция обработки события onMouseMove
function mouseMove(){
alert('mouseDown and mouseMove');
return false;
}
// функция обработки события onMouseUp
function mouseUp(){
// очистить обработчики, т.к перенос закончен
document.onmousemove = null;
document.onmouseup = null;
document.ondragstart = null;
document.body.onselectstart = null;
}
function mouseDown(){
document.onmousemove = mouseMove;
document.onmouseup = mouseUp;
document.onclick = mouseOnDblClick;
// отменить перенос и выделение текста при клике на обьекте
document.ondragstart = function() {return false};
document.body.onselectstart = function() {return false};
return false;
}
return {
makeDraggable: function(element){
element.onmousedown = mouseDown;
}
}
}());
document.write("<div id='test'>Test onClik and onMouseDoun</div>");
master.makeDraggable(document.getElementById('test'));