2010-05-23 4 views
0

IE에서 완벽하게 주위를 끌고있는이 코드가 있습니다 - 그러나 firefox에서 개체의 onmousedown-drag는 즉시 끌어 오지 않지만 no-entry 커서를 표시 한 다음 onmouseup 후에 개체가 자유롭게 끌립니다. 다음 onmouseup에서 물체가 물기를 멈 춥니 다. onmousup 호출은 j_OK = 0으로 드래그를 취소해야하지만 객체는 onmousdown 상태로 드래그해야합니다.개체 드래그 지연 문제

<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 
} 
+0

, 그것은 자바 스크립트 [그것을 필요로하지 않는 경우에도, 끝의 문 세미콜론 스틱 좋은 코드 연습이다 코드에서 html 요소의 속성을 정의 할 때 가독성을 유지하기 위해 따옴표를 사용하십시오. _ < – Warty

+0

j_y 및 j_x가 코드에서 정의되지 않았습니까? BTW, P_MV는 p = mv를 생각하게 만듭니다. [momentum] – Warty

+0

@ItzWarty : 세미콜론을 추가하면 코드를보다 깔끔하게 보이게 할뿐만 아니라, 코드를 축소 할 때 코드가 엉망이되지 않도록합니다. – Robusto

답변

0

그냥 쾌활는 clientX와 clientY로 사용할 수 없습니다 : 나는

개체가 ... 그것은 내부 이미지와 함께 할 수있는 뭔가가있을 수 있습니다 생각합니다. 이러한 속성은 IE와 다른 브라우저에서 다르게 작동합니다. quirksMode says,으로 올바른 위치를 얻으려면 더 많은 일이 필요합니다. 여기에 그의 해결책 :

는 방법에 의해 obfuscater ... 나온 것처럼 코드가 보이는
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 
} 
+0

이것은 cleint XY의 문제에 대한 대답이지만 질문에 대한 대답은 아닙니다 ...이 코드를 삽입해도 문제가 남아 있습니다. –