사파리에서 스크립트가 아닌 (scriptaculous) draggable onEnd가 실행되지 않는다


0

나는 전반적인 움직임을 수평 적으로 (0-400px 그리고 수직으로 움직이지 않는다) 제한하고 양측으로 "스냅"하는 매우 iphone-y 슬라이더 요소를 만들었다. 400px "컨테이너"가 200px 마크를 넘었을 때 드래그가 끝났습니다. 그것은 파이어 폭스에서 완벽하게 작동합니다. Safari에서 요소를이 400px 컨테이너의 양쪽 끝에 배치하는 onEnd 함수는 절대로 호출되지 않습니다. 게다가 드래그 가능한 요소는 마우스 커서에 "붙어"있고 애니메이션을 끝내려면 페이지를 다시로드해야합니다.

여기에 내 코드

<div style="width:100px;height: 60px;background-color:#000;z-index:999" id="dragtest" /> 
<script language="JavaScript" type="text/javascript"> 
new Draggable('dragtest', { constraint: 'horizontal', 
    onEnd: function(e, me) { 
     console.debug("!!!") 
     element = e.element 
     x = element.style.left 
     x = x.gsub('px','') 

     if (x >= 200) { 
      $('dragtest').style.left = 400+'px'; 

     } 

     if (x < 200) { 
      $('dragtest').style.left = 0+'px'; 
     } 

     console.debug("Snapping to ", element.style.left, " (x was ", x, ")") 
     return true; 

    }, 
    snap: function(x, y) { 
     ret_x = x 
     ret_y = y 

     if (x >= 400) { 
      ret_x = 400 
     } 

     if (x <= 0) { 
      ret_x = 0 
     } 

     return [ret_x,ret_y] 

    } 
}); 
</script> 

덕분! andrew

  0

버그 신고 http://bugs.webkit.org : D 22 feb. 092009-02-22 23:19:55

0

나중에 참조 할 수 없으면 (on this google 아무것도 읽을 수 없음) onEnd 핸들러 내에서 console.debug() 호출의 주석 처리를 제거하면 문제가 해결됩니다. 기묘한.

  0

console.debug()를 주석 처리 하시겠습니까? 방화 광을 사용하는 경우 웹 사이트로 이동하여 "console.debug()"와 같은 기능을 정의하는 스텁 파일을 사용하여 브라우저/w-out 방화범이 울리지 않도록하십시오. 25 feb. 092009-02-25 17:27:49

  0

고마워, 난 방화범이 가득 찬 라이트를 가지고 있었어. .. 28 feb. 092009-02-28 03:01:37