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

Yol yok mu?Bu durumda içerik menüsünü yeniden nasıl etkinleştirirsiniz?

Düzenleme: document.oncontextmenu = null çalışmaz.

P.S. İçerik menüsünü engelleyen sitenin sahibi olmadığımdan, dinleyici işlevinin referansını alamıyorum.

+0

neyi "Etik" ile mi demek istiyorsun? –

+7

Bağlam menüsünü bilerek devre dışı bırakan siteler bence, komut dosyalarının bastırılmasını veya çalıştırılmamasını hak ediyor. (NoScript kullanıyorum.) Sık sağ tıklayıp Geri veya İleri'yi seçerek geziniyorum. Bağlam menüsünün çalışmasını istemek konusunda etik olmayan hiçbir şey yoktur. Site yazarı ilk etapta devre dışı bırakıyor aptalca. – JYelton

+0

Denediniz mi? Document.oncontextmenu = null; '? –

cevap

4

Eğer varsa gerçekten umutsuz, addEventListener çağrılmadan önce bu eklemeyi deneyin. Hem FF hem de Chrome'da çalışır. Başka bir şey kontrol etmedim.

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

Bazı şeyleri yapmanın en iyi yolu olmayabilir, ama bu işi özel örnekte :)

+0

Cevabınız için teşekkür ederiz. Görünüşe göre bağlam menüsünü "sonra" yeniden çağırmak mümkün değil ... –

0

İçerik menüsünü devre dışı bırakmak yerine, neden doğru tıklama etkinliğini atarsınız?

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

+0

Bağlam menüsünü devre dışı bırakan ben değilim. Bazı siteler devre dışı bırakıyor ve onu kırmak istiyorum. –

+0

Oh, bir greasemonkey senaryosu mu demek istiyorsun? – Matrym

16

Böyle durumlarda benim işareti uygulamasını kullanmak üzerine yapılmalıdır:

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

Bu iyi çalıştı. Sadece seçenekleri 'contextmenu' ile sınırlamak zorunda kaldı. – ThiagoPonte

+0

Çok iyi çalışıyor, teşekkürler –

+0

Buna 10 kez nasıl oy verebilirim? Teşekkürler! – tyron

İlgili konular