मैं चयनित फ़ायरफ़ॉक्स शॉर्टकट कुंजियों को ओवरराइड करने से रोकने वाले पृष्ठों को कैसे रोकूँ?


40

फ़ायरफ़ॉक्स में, मैं पृष्ठों को मुख्य आधार पर जावास्क्रिप्ट के माध्यम से फ़ायरफ़ॉक्स निर्मित कीबोर्ड शॉर्टकट को ओवरराइड करने से कैसे रोक सकता हूं? अधिमानतः प्रति साइट के आधार पर भी? सबसे निराशाजनक ओवरराइड है आगे का स्लैश ('/') जो "पेज में खोजें" से जुड़ा है। Google खोज परिणाम, ट्विटर टाइमलाइन, कुछ विकी और अन्य पृष्ठ जैसी साइटें अपने स्वयं के खोज बॉक्स के लिए स्लैश कुंजी चुरा लेती हैं, जो पूरी तरह से गलत है।

चूँकि मेरे प्रतिनिधि ने मुझे प्रश्न पूछने, संपादित करने और उत्तर देने की अनुमति दी है, लेकिन टिप्पणियाँ नहीं जोड़ते हैं, यह मूल रूप से इन दो अन्य प्रश्नों का एक डुप्लिकेट है जो ठीक से उत्तर नहीं दिए गए थे:

मेरे कीबोर्ड के शॉर्ट कट्स को ओवरराइड करने के लिए किसी वेबसाइट को कैसे रोकें

फ़ायरफ़ॉक्स: वेबसाइटों को / (स्लैश) कुंजी को ओवरराइड करने की अनुमति नहीं देता है


1
मैं PHPMyAdmin ctrl- <बाएँ तीर> को ओवरराइड करने से निराश हो जाता हूं ... यह एक अच्छा सवाल है
अत्यधिक अनियमित

1
मैं डिफ़ॉल्ट व्यवहार को ओवरराइड करने वाली वेबसाइटों को खड़ा नहीं कर सकता। बहुत कुछ मध्य-क्लिक के साथ भी करता है। उस समस्या के समाधान के लिए यह संबंधित प्रश्न देखें ।
कैम जैक्सन

जवाबों:


12

एडिमट के उत्तर पर बिल्डिंग, मैंने एक उपयोगकर्ता नाम बनाया है जो केवल विशिष्ट कीबोर्ड शॉर्टकट अक्षम करता है। आप जोड़कर अक्षम करने के लिए और अधिक शॉर्टकट जोड़ सकते हैं keycodes keycodes सरणी के लिए, या जो साइटों की जगह करने के लिए इसे लागू करने के लिए प्रतिबंधित @includeएक या अधिक पैटर्न के साथ टैग।

चिकनाई का उपयोग कर स्थापित करें ।

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

keycodes = [191] // Keycode for '/', add more keycodes to disable other key captures

document.addEventListener('keydown', function(e) {
//    alert(e.keyCode); //uncomment to find out the keycode for any given key
    if (keycodes.indexOf(e.keyCode) != -1)
    {
        e.cancelBubble = true;
        e.stopImmediatePropagation();
    }
    return false;
});

2
बहुत बढ़िया! मेटा कीज़ के लिए लगभग पूर्ण समाधान, भी --- मैं Google डॉक्स को पिछले-टैब (Cmd + लेफ्ट) और नेक्स्ट-टैब (Cmd + राइट) को इंटरसेप्ट करने से रोकने की कोशिश कर रहा था और पाया कि मुझे भी सही का उपयोग करने की आवश्यकता है; यानी, document.addEventListener ('कीडाउन', yourHandlerFn, true)
chbrown

1
ध्यान दें कि मूल्य 191आपके कीबोर्ड लेआउट पर निर्भर करता है, जहां तक ​​मेरा azerty सेटअप का संबंध है (मेरे पास अल्फा क्षेत्र के लिए 16 + 58 है और numpad के लिए 111)
sylvainulg

2
और दुर्भाग्य से आजकल काम नहीं करता है (परीक्षणकर्ता और ट्विटर पर परीक्षण किया गया)। कस्टम श्रोता को ट्रिगर किया जाता है, लेकिन साइट की घटना को वैसे भी ट्रिगर किया जाता है और 'पेज में खोज' दिखाई नहीं देती है।
सिल्वेनुलग

1
@sylvainulg मैं देखता हूं कि यह ट्विटर पर काम नहीं करता है, लेकिन कम से कम यह GitHub पर अभी भी काम करता है। मुझे आश्चर्य है कि क्या बदल गया।
बिंकी जू

यह हर जगह काम करता है मैंने इसे php.net को छोड़कर कोशिश की। मुझे आश्चर्य है कि वे किस घटना का उपयोग कर रहे हैं।
क़्वाज़िक्स नौ

8

Google और त्वरित खोज शॉर्टकट के संबंध में, आप इस Greasemonkey स्क्रिप्ट को स्थापित कर सकते हैं:

http://userscripts-mirror.org/scripts/show/132237

जैसा कि वर्णन कहता है, यह "हर कुंजी प्रेस पर खोज इनपुट को केंद्रित करने से Google को रोकता है" - विशेष रूप से, यदि आप /खोज बॉक्स के बाहर कीबोर्ड फ़ोकस के साथ दबाते हैं तो क्विक फाइंड प्रकट होगा, क्योंकि यह अन्य वेब साइटों पर होगा।

मैंने इसे केवल कोड को छूने के बिना स्थापित किया है, लेकिन मुझे लगता है कि इसे आसानी से अन्य साइटों और / या अन्य शॉर्टकट के साथ काम करने के लिए अनुकूलित किया जा सकता है।


स्पष्ट करने के लिए: यह उपयोगकर्ता नाम उन सभी कीबोर्ड शॉर्टकटों को बंद कर देता है, जो ब्राउज़र की स्वयं की कार्यक्षमता को संरक्षित करने के लिए सक्षम हैं। इसे अन्य वेबसाइटों पर लागू करने के लिए सिर्फ और अधिक @include टैग जोड़ें।
माइकफा

लिंक के पीछे क्या छिपा है, इस बारे में कोई जानकारी न होने पर, उपयोगकर्ता दुर्भाग्यवश, फ़ायरवॉल द्वारा अवरुद्ध हो जाता है या जो कुछ भी होता है, उसका उत्तर दुर्भाग्य से बेकार हो जाता है।
सिल्वेनुलग

8

फ़ायरफ़ॉक्स 58 के बाद से प्रति वेब साइट पर कीबोर्ड शॉर्टकट को अक्षम करना संभव है।

"ओवरराइड कीबोर्ड शॉर्टकट" और कई अन्य अनुमतियां "पेज जानकारी -> अनुमतियां" (URL बार में जानकारी आइकन के तहत) में उपलब्ध हैं।

फ़ायरफ़ॉक्स अनुमतियाँ superuser.com के लिए उदाहरण हैं

कीबोर्ड ओवरराइड को फ़ायरफ़ॉक्स # 380637 में पेश किया गया था


1
हां, 11 साल बाद उन्होंने आखिरकार उस टिकट को ठीक करने का आधा काम किया। दुर्भाग्य से वर्तमान कार्यान्वयन (अभी भी एफएफ 59 में) पूरी तरह से उन चाबियों Backspaceऔर Deleteचाबियों को निष्क्रिय कर देता है , जो वास्तव में बेकार है।
लैम्बर्ट

6
इसके अलावा, दुर्भाग्य से यह वेब पेजों को गैर-स्थानांतरित (यानी, नहीं Ctrl, Shiftया Altकुंजी) इनपुट पर कब्जा करने से नहीं रोकता है - जिसका अर्थ है कि यह मूल प्रश्न में उल्लिखित स्लैश कुंजी के साथ बिल्कुल भी मदद नहीं करता है।
लैम्बर्ट

@ लेम्बार्ट - यह जानकर अच्छा लगा, मैंने इसका भी उपयोग नहीं किया, क्योंकि फायरफॉक्स कीबोर्ड शॉर्टकट जीरा और संगम (फिक्स्ड फायरफॉक्स 59 के आसपास) में तय हो गए
एलेक इस्तोमिन

2
क्या तय हुआ था? JIRA और कॉनफ्लुएंस दोनों अभी भी सभी प्रकार की कुंजी को पकड़ते हैं जो लगातार मेरे वर्कफ़्लो को बाधित करते हैं। मैं इसे एटलसियन की समस्या के रूप में देखता हूं: उन्हें लोगों को अपनी "शॉर्टकट" को अक्षम करने (और / या बदलने) की अनुमति देने की आवश्यकता है।
लैम्बर्ट

फ़ायरफ़ॉक्स Bugzilla.mozilla.org/show_bug.cgi?id=1433592 मेरे लिए निर्धारित एटलसियन उत्पाद (एक ही समय सीमा में एटलसियन सुधार हो सकता है)
एलेक इस्तोमिन

0

यहां एक अधिक सामान्य स्क्रिप्ट है - आप अक्षम करने के लिए किसी भी कीपर घटनाओं को परिभाषित कर सकते हैं।

https://greasyfork.org/en/scripts/5819-disable-website-keyboard-hooks

// ==UserScript==
// @name           Disable website keyboard hooks
// @description    Stop websites from hijacking keyboard shortcuts.
// @author         Isaac Levy
// @run-at         document-start
// @include        *
// @grant          none
// @version        0.0.1
// @namespace      https://isaacrlevy.com
// ==/UserScript==

var keycodes = [ // Add keycodes as desired, keep sorted.
    37, 38, 39, 40 // Arrow keys.
]

var meta_keycodes = [ // Disable these when meta key is pressed.
    70
];

// Don't change below this line.

var isMac = navigator.platform.toLowerCase().indexOf('mac') >= 0;

// Create a fast lookup.
// This saves work during normal typing. Maybe unnecessary.
var keycode_offset = keycodes[0];
var keycode_arr = Array(keycodes[keycodes.length - 1] - keycode_offset)
for (var i = 0, len = keycodes.length; i < len; i++) {
    keycode_arr[keycodes[i] - keycode_offset] = true;
}

document.addEventListener('keydown', function(e) {
    //console.log(e);
    if ((isMac && e.metaKey) || (!isMac && e.ctrlKey)) {
        if (meta_keycodes.indexOf(e.keyCode) >= 0) {
            e.stopImmediatePropagation();
        }
    } else if (keycode_arr[e.keyCode - keycode_offset]) {
        e.stopImmediatePropagation();
    }
    return false;
});

मुझे खेद है - लेकिन मुझे यह काम करने के लिए नहीं मिलेगा। विशेष रूप से मैं किसी साइट पर बाएँ और दाएँ तीर कुंजियों को अक्षम करना चाहता हूँ - लेकिन इस स्क्रिप्ट के साथ तीर कुंजियाँ अभी भी साइट को नियंत्रित करती हैं ???
क्रिश्चियन हरेंज

-3

YesScript ऐड-ऑन मेरे लिए परेशानी मुक्त समाधान था। यह साइटों को जावास्क्रिप्ट को चलाने से रोकता है लेकिन केवल उन साइटों को चुनें जिन्हें आप चुनते हैं। अधिकांश समय ये साइटें जावास्क्रिप्ट द्वारा कीबोर्ड शॉर्टकट को हाईजैक करती हैं। मैंने इसके बारे में इस लेख पर लिखा है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.