2010-07-17 4 views
0

사용자가 그림 영역 주위로 도형을 이동할 수있게 해주는 자바 스크립트 응용 프로그램이 있으며 Google Closure 라이브러리를 사용하고 있습니다. FF/Safari에서 모든 것이 좋습니다.VML 및 Internet Explorer에서 그래픽 요소 선택 사용 안 함

http://i.imgur.com/O33MN.png

은 어떻게 해제 할 수 있습니다 그래픽 요소가 이동으로 IE에서, 그들은 예측할 수없는 방법으로 일부 요소 주위에 색 점선 배경을 표시하는, (이동 요소 및 기타 요소 모두) 브라우저 선택하세요 IE 에서이 동작?

+0

그래픽 및 이벤트 처리기를 다루는 코드를 만드는 데 사용하는 코드를 올려 놓으십시오. – Maz

답변

0

몇 가지 실험을 한 후에 부분적인 답을 발견했습니다.

goog.events.Event 클래스에는 preventDefault 메소드가 있습니다. 그래픽 요소에서 MOUSEMOVE 이벤트를 처리하기 만하면됩니다. 그런 다음 이벤트 # preventDefault 메서드를 호출합니다.

var element = ... // some element 
var graphics = goog.graphics.createGraphics('400', '300'); 

var fill = new goog.graphics.SolidFill('#00ff00', 0.5); 
var stroke = new goog.graphics.Stroke(1, 'black'); 

graphics.drawEllipse(60, 60, 10, 10, stroke, fill); 
graphics.drawEllipse(90, 90, 10, 10, stroke, fill); 

graphics.render(element); 

goog.events.listen(graphics.getElement(), goog.events.EventType.MOUSEMOVE, function(e) { 
    e.preventDefault(); 
    e.stopPropagation(); 
}); 

그래픽 요소 내부를 클릭 한 다음 드래그하여 더 이상 원을 선택하지 않습니다. 다시 말하지만, 이것은 IE에서만 필요합니다.

사소한 문제가 하나 남아 있습니다. 그래픽 영역 밖에서 마우스를 누른 다음 그래픽 영역으로 커서를 드래그하면 전체 영역이 선택되거나 영역과 그래픽 요소가 모두 선택됩니다.

2

제공된 정보에서 문제를 진단하기가 어렵습니다. IE VML은 잘 지원되지 않으므로 꽤 버그가 있습니다.

DojoX Drawing에서 선을 그릴 때 비슷한 문제가 발생했습니다. VML은 동시에 드래그하고 크기를 조정할 수없는 버그가 있습니다. 그러나 동시에 드래그하여 생성 할 수 있으므로 선을 다시 그리면 변형되지 않습니다.

또한 모양에 클릭/끌기 이벤트를 첨부하지 않고 전체 주 컨테이너에 첨부하고 mousedown 이벤트에서 ID를 감지 한 다음 mousemove를 추적하고 setTransform을 통해 모양을 이동합니다. 모양의 컨테이너.

기본적으로 약한 VML 지원으로 인해 완전히 다른 작업을 시도해 볼 필요가 있습니다.