2010-06-02 4 views
10
document.addEventListener('contextmenu', function (e) { 
    e.preventDefault() 
    e.stopPropagation() 
    e.returnValue = false 
    e.cancleBubble = true 
}) 

어때요?이 경우 상황에 맞는 메뉴를 다시 활성화하는 방법은 무엇입니까?

편집 : document.oncontextmenu = null이 작동하지 않습니다.

P. 컨텍스트 메뉴를 방지하는 사이트의 소유자가 아니기 때문에 나는 리스너 함수에 대한 참조를 가질 수 없습니다.

+0

무엇 "윤리"란 뜻이야? –

+7

의도적으로 컨텍스트 메뉴를 사용하지 않는 사이트는 스크립트가 억제되거나 실행되지 않아야한다고 생각합니다. (NoScript를 사용합니다.) 자주 마우스 오른쪽 버튼을 클릭하고 뒤로 또는 앞으로 이동을 선택하여 탐색합니다. 상황에 맞는 메뉴를 사용하는 것이 비 윤리적 인 것은 아닙니다. 사이트 작성자가 처음에이를 사용 중지하면 바보입니다. – JYelton

+0

'document.oncontextmenu = null;'시도한 적이 있습니까? –

답변

4

당신이 경우 정말 절망의 addEventListener 호출하기 전에이를 추가하려고합니다. 그것은 FF와 크롬 모두에서 작동합니다. 나는 다른 것을 확인하지 않았다.

document.superListener = document.addEventListener; 
document.addEventListener = function(type, listener, useCapture){ 
    if(type != 'contextmenu') 
     document.superListener(type, listener, !!useCapture); 
}; 

그것은 일을 할 수있는 가장 좋은 방법이 될 수 없습니다,하지만 작업이 특정 예 :

+0

답변 해 주셔서 감사합니다. 컨텍스트 메뉴를 "통화 후"다시 활성화하는 것은 불가능한 것 같습니다. –

0

컨텍스트 메뉴를 비활성화하는 대신 오른쪽 클릭 이벤트를 할당하지 않으시겠습니까?

http://abeautifulsite.net/2008/05/jquery-right-click-plugin/

+0

저는 컨텍스트 메뉴를 비활성화 한 사람이 아닙니다. 일부 사이트는 사이트를 사용 중지하고 사이트를 중단하려고합니다. –

+0

오, 너 greasemonkey 대본 같은게 있니? – Matrym

16

나는 그런 경우에 내 북마크 사용에 수행해야합니다 :

javascript:(function(w){ 
    var arr = ['contextmenu','copy','cut','paste','mousedown','mouseup','beforeunload','beforeprint']; 
    for(var i = 0, x; x = arr[i]; i++){ 
     if(w['on' + x])w['on' + x] = null; 
     w.addEventListener(x, function(e){e.stopPropagation()}, true); 
    }; 
    for(var j = 0, f; f = w.frames[j]; j++){try{arguments.callee(f)}catch(e){}}})(window); 
+0

이 중 하나가 정상적으로 작동했습니다. 옵션을 'contextmenu'로 제한해야했습니다. – ThiagoPonte

+0

매우 효과적입니다. 감사합니다. –

+0

10 회까지 어떻게 투표 할 수 있습니까? 감사! – tyron

관련 문제