2010-05-30 5 views
3

처음으로 파이어 폭스의 배경 페이지 앞으로/뒤로 가기 키를 취소는 그리스 몽키

맥 OS X 10.5.8에 파이어 폭스 3.6.3에서

표준에 명령 + 왼 화살 및 명령 + 오른 화살의 단축키 조합을 텍스트를 입력 할 때 커서를 현재 줄의 시작/끝으로 각각 이동하십시오. 그러나 CKEditor, FCKEditor 및 YUI Editor를 사용하면 Firefox가 텍스트 영역임을 완전히 인식하지 못하는 것 같습니다. 대신 브라우저 기록에서 뒤로/앞으로 이동하려는 바로 가기 키의 기본 기능으로 되돌아갑니다. 이 문제가 발생한 후에는 페이지로 돌아 가면 편집자의 텍스트도 지워 지므로 작업중인 모든 항목을 쉽게 잃어 버릴 수 있습니다.

이벤트 캡처 및 페이지 앞으로/뒤로 점프가 실행되는 것을 방지하는 데 사용할 수있는 greasemonkey 스크립트를 작성하려고합니다. 지금까지, 나는이 Greasemonkey와의 .user.js 스크립트로 사용되는 다음으로 이벤트를 볼 수있었습니다 :),

document.addEventListener('keypress', function (evt) { 
// grab the meta key 
var isCmd = evt.metaKey; 

// check to see if it is pressed 
if(isCmd) 
{ 
    // if so, grab the key code; 
    var kCode = evt.keyCode; 

    if(kCode == 37 || kCode == 39) 
    { 
    alert(kCode); 
    } 
} 

} 거짓 을;

command + left | right arrow 키를 누르면 경고가 해당 코드와 함께 표시되지만 대화 상자가 닫히면 브라우저는 페이지 앞으로/뒤로 이동을 실행합니다. evt.keyCode = 0으로 새 코드를 설정하려고했지만 작동하지 않았습니다.

이렇게 Greasemonkey 스크립트를 업데이트하여 뒤로/앞으로 페이지 이동을 방지 할 수 있습니까?

(참고 : 나는 다른 솔루션에도 열려 있습니다 .Greasemonkey 일 필요는 없지만 실제로 시도한 방향입니다. 실제 목표는 앞으로/뒤로 단축키 기능을 비활성화 할 수있게하는 것입니다.)

+0

몇 번 시도했지만 위의 전체 코드 스 니펫이 코드 강조 표시 영역에 남아 있지 않습니다. 이것을 복사하면 마지막 "}, 거짓);" 부품. –

답변

2

다음에 return false;을 추가하십시오. 대부분 시간을 지켜야합니다.

도 추가 할 수 있습니다 :

evt.preventDefault(); 
and/or 
evt.stopPropagation(); 

이 두 가지 기능은 대부분의 FF 버전에서 작동하지만 난 맥에 대해 확실하지 않다. 또한 일반적으로 편집기 스크립트 뒤에 func이 실행됩니다. 그러나 이전에 실행되면 커서 이동을 비활성화 할 수 있습니다.

+0

evt.preventDefault(); 알았다. 그것은 실제로 커서 점프도 비활성화하지만, 나는 그걸로 괜찮습니다. 데이터를 잃어 버리는 것보다 수동으로해야 할 것입니다. 전체 코드는 다음과 같습니다 { //이 메타 키 VAR isCmd = evt.metaKey 잡아 document.addEventListener ('키를 누를 때', 기능 (EVT) // 것은이 을 누르면 확인을 (isCmd) { // 그렇게하면, 키 코드를 잡고있는 경우, VAR kCode = evt.keyCode; //이 남아 있는지 또는 우측 키 화살표 경우 (kCode의 == 37 || kCode의 == 39) { // 기본값 인 경우 기본값이 실행되지 않도록합니다. evt.preventDefault(); } } }, 거짓 ); –

관련 문제