2011-08-19 8 views
2

대화식지도를 표시하는 Java 애플릿이 있습니다. 스크롤 휠을 사용하여 사용자는지도를 확대/축소 할 수 있습니다. 아쉽게도 웹 브라우저 (Firefox)도 스크롤 이벤트에 응답하고 애플릿은 표시된 페이지에서 스크롤되도록 끝납니다.브라우저가 스크롤 이벤트에 응답하지 못하게하는 방법

제 질문은 마우스가 애플릿의 경계 내에있을 때 브라우저가 응답하지 않게하려면 어떻게합니까?

지금까지 나는

applet.focus() 

내가이

requestFocus(); 

처럼 내 애플릿의 Java 코드에 문을 추가하려고 애플릿 요청 초점을 만들기 위해 내 HTML을 수정 시도했다 그러나 어느 쪽도 해결하지 않았다 문제.

애플릿에 특정 확대/축소 컨트롤을 추가하거나 웹 페이지의 스크롤을 줄이기 위해 내 웹 페이지를 재구성 할 수는 있지만 스크롤 휠이 확대/축소 작업을 수행하면 좋을 것입니다. 지도 만. 같은 것을 할 자바 스크립트와

+1

BTW * "브라우저를 막는 방법 .."*은 사용자의 브라우저를 사용하기위한 우리의 권리가 아니며 Java (분명히 샌드 박스 애플릿이 아닙니다)로 시도 할 수있는 것이 아닙니다. –

+0

애플릿을 별도의 창에서 실행한다는 의미입니까? 애플릿은 웹 페이지의 다른 컨트롤과 상호 작용하여지도에 표시된 내용을 필터링합니다. –

+0

별도의 창 - 애플릿 뷰어는 부동 애플릿을 표시하는 데 사용됩니다. * "애플릿은 웹 페이지의 다른 컨트롤과 상호 작용합니다."* 명확한 설명을 해주셔서 감사합니다. 애플릿이 내장 된 경우 ("웹 시작을 사용하여 실행"옵션 제외) 몇 가지 경우 중 하나입니다. –

답변

4

사용 :

var applet = document.getElementById("appletID"); 
applet.mouseover = function(e) { 
    document.body.onscroll = function(e) { 
     e.preventDefault(); 
    } 
} 

applet.mouseout = function(e) { 
    //replace with empty function 
    document.body.onscroll = function(e) { } 
} 

하지이 테스트되지 않은 코드입니다. 내가 오타를 말했듯이 몇 오타

편집을 할 수있는 ... 나는 이것을 테스트하고 그것은 확실히 작동합니다

window.onload = function() { 

var applet = document.getElementById("header"); 
    applet.onmouseover = function(e) { 
     window.onscroll = function(e) { 
     //scroll where you want to be (the top) 
      scroll(0,0) ; 
     } 
    } 

    applet.onmouseout = function(e) { 
      //replace with empty function 
      window.onscroll = function(e) {} 
    } 

}; 

스크롤 방법으로 깨끗하지 않지만로 preventDefault 작동하지 않았다 사용. ..

+0

+1. JS가 샌드 박스 애플릿에서 작동하도록 만드는 유일한 방법이라고 생각합니다. –

+0

훌륭한 아이디어와 받아 들였지만, 어떤 이유로 내 onscroll 함수가 호출되지 않습니다. e.preventDefault()에 중단 점을 설정했는데 절대 적중하지 않았습니다. 다른 JS 코드가 다른 onscroll 함수를 설정하고 있습니까? –

0

지도를 표시하는 컨테이너에 MouseListener를 연결하고 컨테이너를 requestFocus() 했습니까?

관련 문제