Проблема задержки перетаскивания объекта - PullRequest
0 голосов
/ 24 мая 2010

У меня есть этот код, который прекрасно перетаскивает вещи в IE - однако в Firefox перетаскивание объекта onmousedown не приводит к немедленному перетаскиванию, а показывает курсор без входа, а затем после onmouseup объект свободно перемещается Объект перестает тянуть при следующем включении. Объект должен перетаскивать только в состоянии onmousdown, в то время как вызов onmousup должен отменить перетаскивание, сделав j_OK = 0. Я думаю, что это может иметь какое-то отношение к изображению внутри ...

объект:

    <em style=position:absolute;left:0;top:0;width:32;height:32;display:block>
< img src=abc.gif onmousedown=P_MV(this.parentNode) style=position:absolute;left:0;top:0;width:inherit>
</em>



    function P_MV(t)
{
 p_E=t
 j_oy=parseInt(p_E.style.top)
 j_ox=parseInt(p_E.style.left)
 j_OK=1
 document.onselectstart=function(){return false}
 document.onmousemove=P_MVy
}

function P_MVy(e)
{
 if(j_OK)
 {
  p_E.style.top=(j_FF?e.clientY:event.clientY)-j_y+j_oy
  p_E.style.left=(j_FF?e.clientX:event.clientX)-j_x+j_ox
 }
 return false
} 

1 Ответ

0 голосов
/ 24 мая 2010

Вы не можете просто беспечно использовать clientX и clientY. Эти свойства работают по-разному в IE и других браузерах. Как говорит quirksMode, есть еще кое-что, чтобы найти правильное местоположение. Вот его решение:

function doSomething(e) {
    var posx = 0;
    var posy = 0;
    if (!e) var e = window.event;
    if (e.pageX || e.pageY)     {
        posx = e.pageX;
        posy = e.pageY;
    }
    else if (e.clientX || e.clientY)    {
        posx = e.clientX + document.body.scrollLeft
            + document.documentElement.scrollLeft;
        posy = e.clientY + document.body.scrollTop
            + document.documentElement.scrollTop;
    }
    // posx and posy contain the mouse position relative to the document
    // Do something with this information
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...