2013-03-27 3 views
1

에서 앞쪽으로와 mouseUpjQuery를 내가 몇 가지 코드 아카이브에게 이러한 기능이 IE8

function activateMove() { 
     isMoving = false; 
     $thumb.bind('mousedown', startMove); 
    } 

    function startMove() { 
     isMoving = true; 
     $(document).bind('mousemove', moveUpdate); 
     $(document).bind('mouseup', endMove); 
     return false; 
    } 

    function endMove() { 
     isMoving = false; 
     $(document).unbind('mousemove', moveUpdate); 
     $(document).unbind('mouseup', endMove); 
     return false; 
    } 

난 단지의 일부를 복사 한 함수가 있지만 충분히 명확해야합니다.

문제는 mouseup 이벤트입니다. IE8을 제외한 모든 브라우저에서 정상적으로 작동합니다.

엄지 손가락을 드래그하여 브라우저 외부로 놓으면 마우스를 움직이지 않고 마우스를 움직이면 이미지가 움직입니다. 이 자동 이동을 중지하려면 다시 클릭해야합니다.

은 그래서 의미 : 이미지에

  • 클릭
  • 후 드래그를하고
  • 이제 경우 (예 : 주소 표시 줄에 마우스를 놓습니다) 페이지의 가시 영역 밖에서 마우스를 놓습니다 당신이 아래로 마우스를 이동 (이상적인 동작하지 않습니다) 마우스로 이미지 이동 이에 대한

모든 가능한 솔루션 IE8? 나는 이것에 많은 시간을 보냈다 ...

나는 온라인 답변이 될 것입니다, 정말 고마워요!

+0

[이 질문에] (http://stackoverflow.com/q/6019190/778118) 보이는 것 같습니다. 그럼 [이 하나] (http://stackoverflow.com/a/11367687/778118). – jahroy

+0

감사하지만 이미 나를 위해 일하지 않는 Google지도 하나를 시도 : ( – simon

+0

[link] (http://stackoverflow.com/q/4595606/467853)의 가능한 복제본 –

답변

2

이것은 IE8의 버그로 인해 잘못 구현 된 보안 수정으로 생각됩니다.

IE8에서 document.mouseup을 (를) 포함하여 마우스가 아무 문서도 마우스를 놓지 않으면 화재가 발생합니다. IE의 초기 보안 버그로 인해 브라우저 외부에 마우스가 튕겨져있을 수 있습니다.

이 기능을 사용하려면 마우스로 내용 영역을 떠날 때 다른 이벤트를 발생시켜야합니다. 다행히 IE 여기 타당성 이벤트를 가지고 우리가 사용할 수 있습니다 mouseleave이 필요한 동작입니다

function startMove() { 
    isMoving = true; 
    $(document).bind('mousemove', moveUpdate); 
    return false; 
} 

function endMove() { 
    isMoving = false; 
    $(document).unbind('mousemove', moveUpdate); 
    return false; 
} 

function activateMove() { 
    isMoving = false; 
    $thumb.bind('mousedown', startMove); 
    $(document).bind('mouseup', endMove); 

    //IE8 hack - also end the move when the mouse leaves the document 
    $(document).bind('mouseleave', endMove); 
} 

하는 것으로 - 마우스가 문서 영역을 떠나면 때 발생합니다. IE가 아닌 브라우저는 mouseout을 대신 지원하지만 마우스가 하위 콘텐츠를 교차 할 때마다 실행됩니다. 유용하기 때문에 jQuery spoofs it in other browsers.