फ़ायरफ़ॉक्स में वेबसाइटों द्वारा कीबोर्ड शॉर्टकट चोरी करने से कैसे मना करें


57

कई वेबसाइट, विशेष रूप से रिच टेक्स्ट एडिटिंग से जुड़ी हर चीज (यह साइट दोषी भी है), आमतौर पर फ़ायरफ़ॉक्स को नियंत्रित करने के लिए उपयोग किए जाने वाले कीबोर्ड शॉर्टकट चुराते हैं और इसके बजाय कुछ और करते हैं। यह पूरी तरह से infurating है जब मैं Cmd-number, Cmd-L, Cmd-T या Cmd-K जैसी कोई चीज़ दबाता हूं और यह वह नहीं करता है जो मैं चाहता हूं। क्या मैं इसे रोक सकता हूं?

वास्तव में, यह शायद सबसे अच्छा होगा यदि मैं सभी Cmd- * शॉर्टकट की चोरी को मना कर सकता हूं। मैंने उन्हें कभी किसी उपयोगी चीज़ के लिए इस्तेमाल नहीं किया। क्या यह संभव है?


4
सहमत, यह infuriating है। FogBugz में कीबोर्ड शॉर्टकट का बहुत अच्छा कार्यान्वयन है। CTRL-;शॉर्टकट मोड में प्रवेश करता है और उपलब्ध शॉर्टकट के साथ स्क्रीन पर दिखाई देने वाली सभी कमांड को हाइलाइट करता है। प्रत्येक शॉर्टकट एक कॉम्बो है, इसलिए नया मामला है CTRL-; Nऔर संपादित है CTRL-; E। बहुत आसान करने के लिए इस्तेमाल किया और शून्य संघर्ष। मैं चाहता हूं कि अधिक साइटें कुछ इस तरह का उपयोग करें क्योंकि यह उपयोगकर्ता के लिए आसान है और ब्राउज़र शॉर्टकट को ओवरराइड नहीं करता है। बहुत बुरा सुपरयूजर ऐसा नहीं करता क्योंकि यह FogBugz के समान लोगों से है।
सैम


1
बुग्जिला पर इस फीचर अनुरोध पर इस पर चर्चा की जा रही है ।
मैकेनिकल घोंघा

मैं काम पर बहुत सारे इंट्रानेट पृष्ठों पर जाता हूं जो किसी भी तरह cmd + N को गड़बड़ करते हैं, इसलिए मैं कभी भी कीबोर्ड से नई ब्राउज़र विंडो नहीं खोल सकता! गुस्सा कर देने वाला!
निकोलस मियारी

1
~ 12 वर्षों के बाद, मोज़िला ने इसके लिए एक बहुत ही उचित निर्धारण को स्थिर किया है। यह अच्छी तरह से छिपा हुआ और अपूर्ण है, लेकिन यह आपकी पवित्रता को बचा सकता है। : कृपया यहाँ मेरा उत्तर देख superuser.com/a/1317514/158390
Lambart

जवाबों:


24

Greasemonkey की नई @run-atसंपत्ति के लिए धन्यवाद , यह अब संभव है!

मैंने इस स्क्रिप्ट और इस स्क्रिप्ट से प्रेरणा ली कि उन्हें एक यूजरस्क्रिप्ट में संयोजित किया जाए जो कीबोर्ड शॉर्टकट Ctrl+ Tऔर Ctrl+ को सहजता से स्वीकार करता है S। मैंने फ़ायरफ़ॉक्स 17 ईएसआर और फ़ायरफ़ॉक्स 25 में परीक्षण किया।

// ==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
यह बहुत मददगार था। OS X उपयोगकर्ताओं को अपने ब्राउज़र के अधिकांश शॉर्टकट को पुनः प्राप्त करने और पुनः प्राप्त करने के e.ctrlKeyलिए स्वैप करना चाहिए । e.cmdKeye.cmdKey && e.shiftKey
जेम्सगैको

यह स्क्रिप्ट 9कीकोड्स सरणी में जोड़कर CTRL + TAB को ठीक करने के लिए मेरे लिए काम करती है । धन्यवाद!
माइक म्यूएलर

@JamesGecko को इस उत्तर के माध्यम से पता चला कि आपको कमांड कुंजी के लिए e.metaKey का उपयोग करना चाहिए।
रिजेबोसच

3
यह कोड काम करता है! ध्यान रखें कि यह न केवल Ctrl + Key, बल्कि Ctrl + Alt + Key, Ctrl + Shift + Key और Ctrl + Alt + Shift + Key को भी फ़िल्टर करता है, क्योंकि यह केवल Ctrl संशोधक की स्थिति की जाँच करता है।
रोमनस्ट्रक्ट

पहला सवाल: फ़ायरफ़ॉक्स पर काम करने के लिए प्रतिष्ठित स्क्रिप्ट के लिए, यह क्यों जाँचता है कि क्या ब्राउज़र ओपेरा है? और दूसरा प्रश्न: टिप्पणी 'एस' और 'टी' के लिए वर्ण कोड कहती है, लेकिन कोड वास्तव में 'एस' और 'टी' के लिए हैं। क्या मुझे किसी कारण के लिए अपरकेस कोड निर्दिष्ट करने की आवश्यकता है? धन्यवाद।
डगलस हेल्ड

8

बग दर्ज किए जाने के 11 साल बाद, मोज़िला को आखिरकार इस लोकप्रिय सुविधा अनुरोध पर काम करना पड़ा, और यह अब ठीक काम कर रहा है (फ़ायरफ़ॉक्स 66.0.3 / उबंटू में परीक्षण)।

(यह इंगित करने के लिए @PerJohansson का धन्यवाद कि उन्होंने FF 59 से सेटिंग को और अधिक कठिन बना दिया है।)

आप इन चरणों का पालन करके साइट शॉर्टकट को अक्षम कर सकते हैं:

  1. (i)स्थान पट्टी में आइकन पर क्लिक करें
  2. >"कनेक्शन" स्थिति आइटम के दाईं ओर छोटे तीर ( ) पर क्लिक करें ।
  3. अब, आपको More Informationनीचे देखना चाहिए । उस पर क्लिक करें, और आप अंत में Page Infoसंवाद के लिए पहुंचेंगे।
  4. अंत में, Permissionsटैब पर जाएं और Override Keyboard Shortcutsसेटिंग समायोजित करें ।

यहां हाल ही में (मई 2019) प्रत्येक चरण के लिए स्क्रीन शॉट्स दिए गए हैं:

फ़ायरफ़ॉक्स साइट जानकारी संवाद स्क्रीन शॉट

फ़ायरफ़ॉक्स साइट सुरक्षा संवाद स्क्रीन शॉट

फ़ायरफ़ॉक्स अनुमतियाँ टैब स्क्रीन शॉट

यदि आप इस फिक्स के इतिहास में रुचि रखते हैं, तो यहां संबंधित मोज़िला टिकट हैं: https://bugzilla.mozilla.org/show_bug.cgi?id=380637 और https://bugzilla.mozilla.org/show_bug.cgi ? id = 1445942


2
फ़ायरफ़ॉक्स 64 में (यह कहाँ दिखाई दिया है अनिश्चित), आपको इस आईडी बॉक्स पर पहुंचने के लिए "कनेक्शन" => "अधिक जानकारी" पर क्लिक करना होगा। अनुमतियाँ cogwheel इसके बजाय वरीयताएँ में जाती हैं जो सही जगह नहीं है।
प्रति जोहानसन

धन्यवाद @PerJohansson, मैंने टिकट को अपडेट कर दिया है।
लैम्बर्ट

about:configडिफ़ॉल्ट को बदलने का विकल्प क्या है ? मैं सभी साइटों को अपने कीबोर्ड में हुक करने में सक्षम नहीं होने के लिए मजबूर करना चाहता हूं
inetknght

5

व्यापक शोध से पता चलता है कि फ़ायरफ़ॉक्स के वर्तमान संस्करण (3.6.x) के रूप में यह असंभव है - सभी प्रमुख बाध्यकारी संघर्षों को प्राथमिकताओं के साथ हल किया जाता है: सिस्टम> वेबसाइट> फ़ायरफ़ॉक्स - बल्कि एक बेवकूफाना क्रम है। मैंने जो कुछ भी जोड़ने की कोशिश की है, उसे ठीक करने में सक्षम नहीं लगता।

संभवतः भविष्य के संस्करणों में यह संभव हो सकता है, लेकिन अभी इसका जवाब है - असंभव।


1
लगभग 4 साल बाद एफएफ 30.0 का उपयोग करना और यह अभी भी एक मुद्दा है। मैं मार्टिन के ग्रीसेमोंकी विचार की कोशिश करूँगा।
एलजीटी जूल

2
लगभग 8 साल बाद एफएफ 53.0 का उपयोग करना और यह अभी भी एक मुद्दा है।
डैनियल

5

चूँकि समस्याएँ कीबोर्ड कीबोर्ड घटनाओं को कीप्स चोरी करते हुए प्रतीत होती हैं, तो क्या यह जावास्क्रिप्ट स्क्रिप्ट (Greasemonkey के माध्यम से उपयोग की जाने वाली) को बनाना संभव नहीं होगा, जो इन सभी कीबोर्ड घटनाओं को अनबाइंड करता है , इस प्रकार ब्राउज़र में प्रत्येक शॉर्टकट का उचित उपयोग करता है?

मुझे यकीन नहीं है कि यह कितना व्यवहार्य है, लेकिन अधिक जावास्क्रिप्ट / Greasemonkey experiance के साथ कोई व्यक्ति मदद करने में सक्षम हो सकता है (SO पर पूछने लायक हो सकता है)।


2
यह onKeyPress तंत्र के माध्यम से काम करता है - फ़ायरफ़ॉक्स हर की-वेबसाइट को पहले भेजता है, और केवल बाद में इसे देखता है अगर इसे रद्द या बाधित नहीं किया गया था। कुछ Greasemonkey का जादू जो वेबसाइट से पहले keypresses को इंटरसेप्ट करेगा और किसी तरह से फ़ायरफ़ॉक्स फ़ंक्शंस को सीधे चलाएगा, लेकिन यह स्पष्ट नहीं है।
Taw

4

समस्या यह है कि कोई भी पेज जावास्क्रिप्ट को चला सकता है जो कीपर ईवेंट्स को हथियाने के लिए एक ईवेंट हैंडलर स्थापित करता है, और फ़ायरफ़ॉक्स की जावास्क्रिप्ट नियंत्रण अन्य जावास्क्रिप्ट सुविधाओं को तोड़ने के बिना इसे रोकने के लिए पर्याप्त रूप से ठीक नहीं है।

इसे रोकने का एकमात्र तरीका जावास्क्रिप्ट (उपकरण -> विकल्प, [सामग्री] टैब को अक्षम करना है , सक्षम जावास्क्रिप्ट को अनचेक करें )। या आप NoScript जैसे एक्सटेंशन के साथ प्रति साइट के आधार पर जावास्क्रिप्ट को अक्षम कर सकते हैं।

फ़ायरफ़ॉक्स आपको जावास्क्रिप्ट के कुछ उपयोगों को रोकने की सुविधा देता है , जैसे विंडोज़ को आगे बढ़ाना / आकार बदलना, संदर्भ मेनू को बदलना या अक्षम करना, आदि; लेकिन कीबोर्ड की घटनाओं को रोकने वाली वेब साइटों को रोकने के लिए कुछ भी नहीं है।

हो सकता है कि कोई ऐसा एक्सटेंशन हो जो इस स्तर का नियंत्रण देता हो - मुझे इसकी जानकारी नहीं है।
वहाँ जावास्क्रिप्ट विकल्प है , लेकिन उस विस्तार को अब अपडेट नहीं किया जा रहा है।


2
जावास्क्रिप्ट विकल्प और कुछ अन्य एक्सटेंशन जो मैंने कोशिश की हैं, वे इसका समर्थन नहीं करते हैं। सभी जावास्क्रिप्ट को ब्लॉक करना वेब को बहुत बेकार बना देगा, यह वास्तव में एक विकल्प नहीं है।
taw

0

यह संभावना है कि थर्ड पार्टी प्लगइन्स मुख्य ब्राउज़र विंडो से फोकस ले रहे हैं। उस स्थिति में कीबोर्ड इनपुट (इंटरप्ट को छोड़कर) प्लगइन द्वारा इंटरसेप्ट हो जाएगा। यदि आपको यह पसंद नहीं है, तो आप हमेशा अपमानजनक प्लगइन को हटा सकते हैं [मुझे लगता है कि यह संभवतः फ्लैश है]।


3
फ्लैश यह भी करता है, लेकिन सादे जावास्क्रिप्ट शॉर्टकट चोरी कर सकता है। यहां एक नया प्रश्न शुरू करें, और प्रश्नवाचक विंडो में रहते हुए Cmd-L (गैर-मैक पर Ctrl-L) दबाएँ। इसके बजाय url बार में जाने के बजाय, शॉर्टकट चोरी हो जाएगा और आपको कुछ सम्मिलित हाइपरलिंक संवाद दिखाई देंगे। यह दुर्लभ हुआ करता था, लेकिन हाल ही में कई वेबसाइटों ने भी इसे करना शुरू कर दिया।
तान

मैंने अभी इसे फ़ायरफ़ॉक्स चलाने वाले विंडोज 7 पर आज़माया और मैं सीधे एड्रेस बार में कूद गया जैसे यह सामान्य रूप से होता है।
Daisetsu

क्षमा करें, मैं स्पष्ट नहीं था - यह केवल तब होता है जब रिच टेक्स्टबॉक्स संवाद का चयन किया जाता है। क्या तुमने वह किया? मैंने फ़ायरफ़ॉक्स, ओपेरा, सफारी और क्रोम के साथ OSX पर परीक्षण किया। सभी चार सामान्य रूप से Cmd-L, url बार (और Ctrl-L कुछ नहीं करता) के लिए कूदता है। जब प्रश्न बॉडी और Cmd-L दोनों को संपादित करते हैं, तो Ctrl-L शो के बजाय हाइपरलिंक संवाद सम्मिलित करता है।
taw

लगता है आप सही हैं। मुझे नहीं पता कि इसे कैसे रोका जाए। :( यह एक दिलचस्प सवाल है, इसलिए मैं आपके सवाल को बढ़ा रहा हूं। अगर कोई इसका जवाब नहीं देता है, तो मैं इस पर एक इनाम दूंगा।
Daisetsu

समस्या प्लगइन्स के साथ नहीं है। प्लगइन्स अपने आप में एक अलग समस्या है। और एक अलग समस्या, सब के बाद। प्लगइन्स में, सभी फोकस प्लगइन द्वारा चोरी हो जाते हैं, क्योंकि यह एक अलग इकाई है। जावास्क्रिप्ट के साथ, फ़ायरफ़ॉक्स यूआई जावास्क्रिप्ट है और इसकी अपनी बाइंडिंग है, लेकिन साइटें बाइंडिंग को परिभाषित कर सकती हैं जो समान स्तर पर हैं। अभी तक, इसे रोकने के लिए अभी भी कोई तंत्र नहीं है।
njsg

0

विभिन्न ब्राउज़रों पर बहुत परीक्षण के बाद, जब वे नीचे (दबाए नहीं) जाते हैं, तो कुंजी को इंटरसेप्ट करना आसान होता है क्योंकि इस "ऐप इंटीग्रेटेड की" में से कुछ "कीपर" इवेंट के साथ इंटरसेप्ट करना मुश्किल होता है।

मैं इस स्क्रिप्ट के साथ आया था जो कि क्रॉस ब्राउज़र संगत की तरह है (मैंने माइक्रोसॉफ्ट के IE के लिए परीक्षण नहीं किया था)। ध्यान दें कि ब्राउज़र कुछ कुंजी के लिए अलग-अलग कोड लौटाते हैं। मेरे मामले में मैं Ctrl + P को रोकना चाहता था।

क्रोम पर कुंजी "पी" को e.keyCode == 80ओपेरा के रूप में देखा जाता है e.charCode == 16, जबकि यह फ़ायरफ़ॉक्स पर हैe.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 का उपयोग किया।


0

यदि आप वेबपृष्ठ द्वारा ली जा रही किसी भी ctrl-key को निष्क्रिय करना चाहते हैं , तो az से सभी अक्षर के कोड (पूर्व में स्वीकृत और कार्यशील उत्तर पर निर्माण) के लिए फ़िल्टर करें

// ==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

शायद आप ऑटोहोटेक या ऑटोिट का उपयोग कर सकते हैं, उन कार्यक्रमों में से एक और यदि आप हॉटकी कॉम्बो कर सकते हैं और उन्हें फ़ायरफ़ॉक्स फ़ंक्शंस से जोड़ सकते हैं, तो कहें

Ctrl-; T नए टैब के लिए

Ctrl-; N नई विंडो के लिए, और इतने पर।

मैं नहीं जानता कि ऑटोहोटकी या ऑटोिट का उपयोग कैसे किया जाए, इसलिए किसी और को यह सत्यापित करना होगा कि यह काम कर सकता है, मैं इसे केवल एक संभावित विचार के रूप में पेश करता हूं।


-2

फ़ायरफ़ॉक्स वर्तमान संस्करण हमें "संदर्भ मेनू को जावास्क्रिप्ट अक्षम करने के लिए" सक्षम करता है:

उपकरण / विकल्प / सामग्री / जावास्क्रिप्ट उन्नत / अक्षम करें या संदर्भ मेनू बदलें

लेकिन "कीबोर्ड शॉर्टकट्स को जावास्क्रिप्ट अक्षम करने" के लिए कोई विशेषता नहीं है।

ps। मुझे ट्विटर वेबसाइट से नफरत है, इसके कीबोर्ड शॉर्टकट मेरे सिस्टम-आधारित कीबोर्ड शॉर्टकट के साथ संघर्ष करते हैं: जे, के, एल, आई

मैंने Bugzilla.mozilla.org पर फीचर अनुरोध किया है, कृपया वहाँ टिप्पणी करें : https://bugzilla.mozilla.org/show_bug.cgi?id=775002

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