Firefox'ta web siteleri tarafından çalınan klavye kısayollarını nasıl yasaklayabilirsiniz


56

Birçok web sitesi, özellikle zengin metin düzenlemesi içeren her şey (bu site de suçludur), Firefox'u kontrol etmek için normal olarak kullanılan klavye kısayollarını çalar ve bunun yerine başka şeyler yapmalarını sağlar. Cmd numarası, Cmd-L, Cmd-T veya Cmd-K gibi bir şey bastığımda tamamen çıldırıyor ve istediğim şeyi yapmıyor. Bunu durdurabilir miyim?

Aslında, tüm Cmd- * kısayollarının çalınmasını yasaklayabilirsem, muhtemelen en iyisi olurdu. Onları faydalı bir şey için kullandıklarını hiç görmedim. Mümkün mü?


4
Kabul, çıldırtan. FogBugz, klavye kısayollarının çok iyi bir şekilde uygulanmasına sahiptir. CTRL-;kısayol moduna girer ve ekranda görünen tüm komutları mevcut kısayollarla vurgular. Her kısayol bir açılandır, yani yeni durum CTRL-; Nve düzenlemedir CTRL-; E. Sıfır çatışmalara alışmak çok kolay. Daha fazla sitenin böyle bir şey kullanmasını dilerim çünkü kullanıcı için daha kolay ve tarayıcı kısayollarını geçersiz kılmaz. Çok kötü SuperUser bunu FogBugz ile aynı kişilerden yapmıyor.
Sam,



İşyerinde bir şekilde cmd + N ile karışıklık yaratan birçok intranet sayfasını ziyaret ediyorum, böylece klavyeden hiçbir zaman yeni tarayıcı penceresi açamıyorum! Çok can sıkıcı!
Nicolas Miari

1
~ 12 yıl sonra, Mozilla bunun için oldukça makul bir düzeltmeyi dengelemiştir. İyi gizlenmiş ve kusurludur, ancak akıl sağlığınızı koruyabilir. Lütfen cevabımı burada görün: superuser.com/a/1317514/158390
Lambart

Yanıtlar:


24

Greasemonkey'nin yeni @run-atmülkü sayesinde bu mümkün!

Bu komut dosyasından ve bu komut dosyasından ilham aldım ve bunları Ctrl+ Tve Ctrl+ klavye kısayollarına başarılı bir şekilde engelleyen bir Usercript olarak birleştirdim S. Firefox 17 ESR ve Firefox 25'te test ettim.

// ==UserScript==
// @name           Disable Ctrl+s and Ctrl+t interceptions
// @description    Stop websites from highjacking keyboard shortcuts
//
// @run-at         document-start
// @include        *
// @grant          none
// ==/UserScript==

// Keycode for 's' and 't'. Add more to disable other ctrl+X interceptions
keycodes = [83, 84];  

(window.opera ? document.body : document).addEventListener('keydown', function(e) {
    // alert(e.keyCode ); //uncomment to find more keyCodes
    if (keycodes.indexOf(e.keyCode) != -1 && e.ctrlKey) {
        e.cancelBubble = true;
        e.stopImmediatePropagation();
    // alert("Gotcha!"); //ucomment to check if it's seeing the combo
    }
    return false;
}, !window.opera);

1
Bu çok yardımcı oldu. OS X kullanıcıları takas gerektiğini e.ctrlKeyiçin e.cmdKeyve e.cmdKey && e.shiftKeyonların tarayıcı kısayolları en geri almak için.
JamesGecko

Bu komut dosyası, CTRL + SEKME 9kodlarını keycodes dizisine ekleyerek düzeltmem için çalışıyor . Teşekkürler!
Mike Mueller,

@JamesGecko Bu cevap aracılığıyla e.metaKey komutunu kullanmanız / kullanmanız gerekir.
riezebosch

3
Bu kod çalışıyor! Yalnızca Ctrl + Key'i değil, Ctrl + Alt + Key'i, Ctrl + Shift + Key'i ve Ctrl + Alt + Shift + Key'i de filtrelediğini, çünkü yalnızca Ctrl değiştiricisinin durumunu denetlediğini unutmayın.
RomanSt

İlk soru: Firefox'ta çalıştığı bilinen bir komut dosyası için neden tarayıcının Opera olup olmadığını kontrol ediyor? İkinci soru: yorumda 's' ve 't' karakter kodları yazıyor, ancak kodlar gerçekten 'S' ve 'T' için. Nedense büyük harf belirtmem gerekir mi? Teşekkürler.
Douglas

6

Böceğin açılmasından 11 yıl sonra, Mozilla bu popüler özellik isteği üzerine nihayet çalışmaya başladı ve şu anda iyi çalışıyor gibi görünüyor (Firefox 66.0.3 / Ubuntu'da test edildi).

(Ayarı FF 59'dan bu yana bulmayı çok daha zor hale getirdiklerini belirttikleri için @PerJohansson'a teşekkürler.)

Aşağıdaki adımları izleyerek site kısayollarını devre dışı bırakabilirsiniz:

  1. (i)Konum Çubuğundaki simgesine tıklayın
  2. >"Bağlantı" durum öğesinin sağındaki küçük oku ( ) tıklayın .
  3. Şimdi More Informationaltta görmelisin . Bunu tıkladığınızda, nihayet Page Infodiyaloga geçeceksiniz.
  4. Son olarak, Permissionssekmeye gidin ve Override Keyboard Shortcutsayarı yapın.

İşte her adım için bazı (Mayıs 2019) ekran görüntüleri:

Firefox Site Bilgisi iletişim ekranı görüntüsü

Firefox Site Güvenliği iletişim ekranı görüntüsü

Firefox İzinleri sekmesi ekran görüntüsü

Bu düzeltmenin geçmişiyle ilgileniyorsanız, işte ilgili Mozilla biletleri: https://bugzilla.mozilla.org/show_bug.cgi?id=380637 ve https://bugzilla.mozilla.org/show_bug.cgi ? id = 1445942


2
Firefox 64'te (nerede göründüğünden emin değilsiniz), bu idalog kutusuna erişmek için "Bağlantı" => "Daha fazla bilgi" seçeneğine tıklamanız gerekir. İzin çark dişlisi Tercihler'e giriyor, bunun yerine doğru yer değil.
Johansson Johansson,

TeşekkürlerPerJohansson, bileti güncelledim.
Lambart

5

Kapsamlı araştırmalar, Firefox’un (3.6.x) şu anki haliyle bunun imkansız olduğunu gösteriyor - bütün kilit bağlama çatışmaları önceliklere göre çözüldü: Sistem> Web Sitesi> Firefox - bu oldukça aptal bir emirdir. Çalıştığım eklentilerin hiçbiri düzeltemiyor gibi görünüyor.

Muhtemelen gelecek sürümlerde yapılabilir hale gelebilir, ancak şu anda cevap - İmkansız.


1
Neredeyse 4 yıl sonra FF 30.0'ı kullanmak ve bu hala bir sorun. Martin'in Greasemonkey fikrini deneyeceğim.
LGT,

2
Neredeyse 8 yıl sonra FF 53.0'ı kullanmak ve bu hala bir sorun.
Daniel

5

Sorunlar gibi görünüyor yana JavaScript klavye olayları o (Greasemonkey yoluyla kullanılmak üzere) bir JavaScript komut dosyasını oluşturmak için mümkün olmazdı, basılmasını çalmak keser böylece tarayıcıya her kısayol amacına uygun olarak kullanımını dönen, bunların hepsi klavye olayları?

Bunun ne kadar uygulanabilir olduğundan emin değilim, ancak daha fazla JavaScript / Greasemonkey deneyimine sahip biri yardımcı olabilir (SO'da sormaya değer olabilir).


2
Bu, onKeyPress mekanizmasıyla çalışır - Firefox, her tuşa ilk önce web sitesine gönderir ve daha sonra iptal edilmezse veya ele geçirilmediğinde bakar. Web sitesinden önce tuşlara basan ve bir şekilde firefox işlevlerini çalıştıran bazı Greasemonkey sihri mümkün olabilir, ancak çok açık.
taw

4

Buradaki sorun, herhangi bir sayfanın, keypress olaylarını kapmak için bir olay işleyicisi ayarlayan Javascript'i çalıştırabilmesi ve Firefox'un javascript kontrollerinin, diğer javascript özelliklerini bozmadan durdurmak için yeterince iyi ayarlanmamış olmasıdır.

Bunu önlemenin tek yolu Javascript'i devre dışı bırakmaktır (Araçlar -> Seçenekler, [İçerik] sekmesi, Enable JavaScript'i işaretleyin ). Veya NoSas gibi bir uzantıyla Javascript'i site bazında devre dışı bırakabilirsiniz.

Firefox , pencereleri taşımak / yeniden boyutlandırmak, bağlam menüsünü değiştirmek veya devre dışı bırakmak gibi Javascript'in belirli kullanımlarını önlemenizi sağlar ; ancak web sitelerinin klavye olaylarını engellemesini engelleyecek hiçbir şey yoktur.

Belki bu seviyede kontrol sağlayan bir uzatma vardır - Birinden haberdar değilim.
Orada JavaScript Seçenekler , ama bu uzantı artık güncellenmektedir.


2
Javascript Seçenekleri ve denediğim diğer birkaç uzantı bunu desteklemiyor. Tüm javascriptleri engellemek web'i kullanılamaz hale getirir, bu gerçekten bir seçenek değildir.
taw

0

Üçüncü taraf eklentileri odağı ana tarayıcı penceresinden alıyor olabilir. Bu durumda klavye girişi (kesmeler hariç) eklenti tarafından ele geçirilecektir. Bundan hoşlanmıyorsanız, rahatsız edici eklentileri her zaman kaldırabilirsiniz [Büyük olasılıkla yanıp söneceğini varsayarım].


3
Flash da bunu yapar, ancak düz Javascript kısayolları çalabilir. Burada yeni bir soru başlatın ve soru metni penceresinde Cmd-L'ye (Mac olmayanlarda Ctrl-L) basın. Gerekirse url çubuğuna gitmek yerine, kısayol çalınır ve bir köprü metni iletişim kutusu göreceksiniz. Nadir görülüyordu, ancak son zamanlarda çok fazla web sitesi bunu yapmaya başladı.
taw

Firefox çalıştıran Windows 7'de denedim ve normalde olduğu gibi doğrudan adres çubuğuna atladım.
Daisetsu

Üzgünüm, net değildim - bu sadece zengin metin kutusu iletişim kutusu seçildiğinde olur. Onu yaptınmı? OSX'te Firefox, Opera, Safari ve Chrome ile test ettim. Dördünde de normalde Cmd-L url çubuğuna atlar (ve Ctrl-L hiçbir şey yapmaz). Soru gövdesini düzenlerken, hem Cmd-L hem de Ctrl-L, bunun yerine köprü ekleme iletişim kutusunu gösterir.
taw

Haklı gibisin. Bunu nasıl önleyeceğimi bilemiyorum. :( Bu ilginç bir soru şimdi bu yüzden sorunuzu upvoting ediyorum var kimse bunu açarsa Bunun üzerine bir ödül atmak gerekir..
Daisetsu

Sorun eklentilerde değil. Eklentiler kendi başlarına ayrı bir sorundur. Ve sonuçta farklı bir problem. Eklentilerde, tüm odaklamalar eklenti tarafından çalınır çünkü bu ayrı bir varlıktır. JavaScript ile, firefox kullanıcı arayüzü JavaScript'tir ve kendi ciltlemeleri vardır, ancak siteler aynı düzeyde olan ciltleri tanımlayabilir. Şimdiye kadar, bunu önlemek için hala hiçbir mekanizma yoktur.
njsg

0

Çeşitli tarayıcılarda yapılan pek çok testten sonra, bu "Uygulamaya Entegre Tuşlar" ın bir kısmının "tuşa basma" olayına müdahale etmesi zor olduğundan, tuşlar aşağıdayken (basılmadığında) kesişmek daha kolaydır.

Bu çapraz tarayıcı uyumlu bir komut dosyası ile geldi (Microsoft'un IE için test etmedi). Tarayıcıların bazı tuşlar için farklı kodlar döndürdüğüne dikkat edin. Benim durumumda Ctrl + P'yi önlemek istedim.

Kromda "P" nin anahtarı e.keyCode == 80operada, e.charCode == 16firefox’ta ikene.charCode == 112

$(document).on('keydown', function(e) {
    if(e.ctrlKey && (e.key == "p" || e.charCode == 16 || e.charCode == 112 || e.keyCode == 80) ){
        alert("Please use the Print PDF button below for a better rendering on the document");
        e.cancelBubble = true;
        e.preventDefault();

        e.stopImmediatePropagation();
    }  
});

JQuery kullandım.


0

Web sitesi tarafından ele geçirilen herhangi bir ctrl anahtarını devre dışı bırakmak istiyorsanız , tüm mektubun kodlarını az'dan filtreleyin (daha önce kabul edilen ve çalışan yanıtı kullanarak)

// ==UserScript==
// @name           Disable Ctrl+key interceptions
// @description    Stop websites from highjacking keyboard shortcuts
//
// @run-at         document-start
// @include        *
// @grant          none
// ==/UserScript==

(window.opera ? document.body : document).addEventListener('keydown', function(e) {
    //alert(e.keyCode ); //uncomment to find more keyCodes
    if( e.ctrlKey && e.keyCode>=65 && e.keyCode<=90 ) {
        e.cancelBubble = true;
        e.stopImmediatePropagation();
    }
    return false;
}, !window.opera);

-1

Belki de bu programlardan biri olan Autohotkey veya Autoit'i kullanabilirsiniz ve kısayol tuşu kombinasyonları yapabilir ve bunları firefox işlevlerine bağlayabilirsiniz.

Ctrl-; T yeni sekmeye

Ctrl-; N Yeni pencereye, vb.

Autohotkey veya Autoit'i nasıl kullanacağımı bilmiyorum, bu yüzden başkasının bunun işe yarayabileceğini doğrulaması gerekecek, bunu sadece potansiyel bir fikir olarak öneriyorum.


-2

Firefox'un şu anki sürümü "bağlam menüsünü kaçırmak için javascript'i devre dışı bırakmamızı" sağlıyor:

Araçlar / Seçenekler / İçerik / Javascript'i Etkinleştir / Gelişmiş / İçerik menülerini devre dışı bırak veya değiştir

Ancak "klavye kısayollarını kaçırmak için javascript'i devre dışı bırakma" özelliği yoktur.

ps. Twitter web sitesinden nefret ediyorum, klavye kısayolları sistem tabanlı klavye kısayollarımla çakışıyor: J, K, L, I

Bugzilla.mozilla.org sitesinde özellik isteği yaptım, lütfen oraya yorum yapın : https://bugzilla.mozilla.org/show_bug.cgi?id=775002

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.