2012-03-19 2 views
3

내 화살표 키가 Bing 맵에 의해 도용되어 더 이상 페이지를 스크롤하지 않습니다.기본 동작으로 화살표 키 다시 설정

어쨌든 화살표 키를 JavaScript로 기본 동작으로 재설정 하시겠습니까? 웹킷이 일치하지 않는 경우

<!doctype html> 
<html lang="en"> 
<head> 
    <title>Blur Object Test</title> 
</head> 
<body> 
<object id="bingmap" data="http://www.bing.com/maps"></object> 
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /> 
<script type="text/javascript"> 
    document.activeElement.blur(); window.focus(); document.activeElement = document; 
</script> 
</body> 
</html> 

는, 마우스 오버 이벤트를 대신 사용

+0

:

이 작업을 수행하는 가장 쉬운 방법은이 같은 Greasemonkey와와 미리 만들어진 스크립트입니까? 모든 사람이 볼 수 있도록 상황을 복제 할 수 있습니까? – Joseph

+0

자바 스크립트를 사용하지 않습니다. 브라우저 및 설치된 확장 프로그램에 따라 스크립트를 선택적으로 비활성화 할 수 있습니다. – RobG

+0

JavaScript를 비활성화하는 것은 오늘날의 대부분의 웹 사이트 에서처럼 옵션이 아닙니다. 복제하려면 모든 웹 페이지에 빙지도를 추가하십시오. – bcm

답변

3

결국 나는 bing에 대한 keydown 이벤트를 사용할 수있었습니다. 따라서 사용자는 커서가 빙의지도 (전체 페이지를 차지하지 않음) 내에있을 때 확대/축소/클릭/드래그하여 이동할 수 있습니다. 그러나, 그들이 일반적으로 사이트의 화살표 키를 가리키면 빙지도에 영향을주지 않습니다.

새로운 Microsoft.Maps를 초기화하는 후에, 나는지도의를 keyDown 이벤트를 취소하는 핸들러를 추가 할 수 있다는 것을 발견 :

Microsoft.Maps.Events.addHandler(map, 'keydown', cancelEvent) 
+0

감사합니다. API 호출을 어떻게 파악 했습니까? –

+0

나는 keydown 핸들러 (동작이 지속되도록 존재해야 함)를 찾고 가서 그것을 취소하기위한 문서를 찾았습니다. 솔루션을 덮어 쓰는 것 (일명 해킹)보다 훨씬 선호됩니다. – bcm

+0

이 답변을 시도했지만 작동하지만지도 플러그인 외부의 keydown 이벤트가 계속해서 흩어지는 다른 문제가있는 것으로 보입니다. disableKeyboardInput : mapOptions에서 true를 설정하는 것이 더 나은 방법이라는 것을 알았습니다. 지도에서 키보드 입력을 계속 사용하려는 경우 초기화 후 map.blur()를 호출하는 또 다른 옵션이있는 것 같습니다. –

0

사용 document.activeElement 파이어 폭스 .blur(), IE에 같이 window.blur() 및 document.activeElement = 문서 웹킷 초점을 탈환하기 위해 :

function takeback() 
    { 
    while(RegExp("object","i").test(document.activeElement.nodeName)) 
     { 
     window.focus(); 
     document.activeElement.blur(); 
     } 
    return false; 
    } 

    if (!!document.addEventListener) 
    { 
    document.addEventListener("mouseover", takeback, false); 
    } 
    else 
    { 
    window.focus(); 
    } 
+0

신중하게 대답 해 주신 Paul에게 감사드립니다 ... 내가 사용한 것을 게시 해 드리겠습니다. – bcm

0

완전히 키보드 이벤트와 상호 작용에서지도를 방지하려면, I 맵을 초기화 할 때 "disableKeyboardInput"속성을 사용하는 것이 가장 좋은 해결책이라고 생각하십시오. 에서

// Initialize the map 
    map = new Microsoft.Maps.Map(document.getElementById("myMap"), { 
    credentials:"Bing Maps Key", 
    disableKeyboardInput: true 
    }); 

: http://social.msdn.microsoft.com/Forums/en-US/2807cbc3-0f88-4415-b2a9-09e950d210f7/issue-with-bing-maps-while-pressing-the-down-or-up-arrow

0

가 (즉 keybinds를 제거하지만, 다른 페이지 기능을 유지) 다른 자바 스크립트를 깨지 않고이 동작을 중지하려면 특정 자바 스크립트가 그 keybinds에 영향을 호출 (오직 그들) 중단해야합니다. 그래서 어떻게 우리가이 일에 대답 가정 할 Disable website keyboard hooks