दिलचस्प पोस्ट
यूनिक्स खोल स्क्रिप्ट में "#! / Bin / sh" का मतलब क्या है? डायनामिक रूप से बनाए गए बटन पर कोड असाइन करें कोणीय $ q, कैसे कई के भीतर और के लिए एक लूप के भीतर चेन बहस करने के लिए डी 3 फोर्स निर्देशित ग्राफ़: झंडे क्यों नहीं दिखते? क्रेडिट कार्ड का विवरण संग्रहीत करना इकाई प्रकार ApplicationUser वर्तमान संदर्भ के लिए मॉडल का हिस्सा नहीं है ओपनसीवी 2.2 में पिक्सल एक्सेस एएसपी.नेट एमवीसी मॉडल से सभी त्रुटियों को कैसे प्राप्त करें? पायथन में एक फ़ाइल को कैसे ले जाए क्या सीवीएस से गिट तक माइग्रेशन टूल है? क्या यह गिनती की तुलना में नीचे गिनती तेज है? कैसे git में करने के बाद स्वचालित रूप से धक्का? मैं jQuery का उपयोग कर अपनी सीएसएस स्टाइलशीट कैसे बदलूं? आउटलुक '07 / '10 / '13 पर पूर्ण चौड़ाई वाली पृष्ठभूमि स्पष्ट वादा निर्माण antipattern क्या है और मैं इसे कैसे से बचने करूँ?

जावास्क्रिप्ट कैप्चर ब्राउज़र शॉर्टकट (ctrl + t / n / w)

क्या ये शॉर्टकट कैप्चर करना संभव है?

  • Ctrl + N
  • Ctrl + T
  • Ctrl + W

मैंने यह कोशिश की लेकिन यह काम नहीं करता है:

$(window).keydown(function(event) { console.log(event.keyCode); event.preventDefault(); }); 

जब मैं टी दबाता हूं तो कंसोल में 84 को दिखाया जाता है, लेकिन अगर मैं Ctrl + T दबाता हूं, तो यह कुछ भी नहीं दिखाता है, और एक नया टैब खोलता है।

मैं इन शॉर्टकट्स को कैप्चर करना और किसी भी ब्राउज़र एक्शन को रोकना चाहता हूं।

वेब के समाधान से एकत्रित समाधान "जावास्क्रिप्ट कैप्चर ब्राउज़र शॉर्टकट (ctrl + t / n / w)"

जावास्क्रिप्ट में Ctrl कुंजीपटल ईवेंट कैप्चर करना

नमूना कोड:

 $(window).keydown(function(event) { if(event.ctrlKey && event.keyCode == 84) { console.log("Hey! Ctrl+T event captured!"); event.preventDefault(); } if(event.ctrlKey && event.keyCode == 83) { console.log("Hey! Ctrl+S event captured!"); event.preventDefault(); } }); 

फ़ायरफ़ॉक्स

(6.0.1 परीक्षण)

फ़ायरफ़ॉक्स में दोनों घटना श्रोता काम करता है यदि आप Ctrl T या Ctrl S keycombinations को दबाते हैं, तो आपको कंसोल पर दोनों संदेश मिलेंगे, और ब्राउज़र एक टैब खोलने के लिए अभ्यस्त होगा, और न ही सहेजने की मांग करेगा।

यह intresting है कि अगर आप event.preventDefault() की बजाय alert उपयोग करते हैं तो event.preventDefault() काम नहीं करता है, और एक नया टैब खोलता है या सहेजने के लिए पूछता है हो सकता है कि इस बग को तय करने की आवश्यकता हो।


Chrome3

क्रोम 3 में यह फ़ायरफ़ॉक्स में काम करता है


Chrome4

(परीक्षण किया)

क्रोम 4 में, कुछ नियंत्रण कुंजी संयोजनों को ब्राउज़र के उपयोग के लिए आरक्षित किया गया है और वेब पेज में क्लाइंट साइड जावास्क्रिप्ट द्वारा इसे अब रोक नहीं सकता है।
ये प्रतिबंध Chrome3 में मौजूद नहीं था और फ़ायरफ़ॉक्स 3 / 3.5 और आईई 7/8 (विंडोज़ पर) दोनों के साथ असंगत हैं।

क्रोम 4 में यह कुछ कुंजीपटल संयोजन को छोड़कर फ़ायरफ़ॉक्स के समान काम करता है:

  • Ctrl N

  • Ctrl Shift N

  • Ctrl टी

  • Ctrl Shift T

  • Ctrl W

  • Ctrl Shift W

इन संयोजनों को जावास्क्रिप्ट द्वारा कब्जा नहीं किया जा सकता, लेकिन एम्बेड प्लग इन इन पर कब्जा कर सकते हैं। उदाहरण के लिए यदि आप यूट्यूब वीडियो पर ध्यान केंद्रित करते हैं और Ctrl टी दबाते हैं, तो ब्राउज़र एक नया टैब नहीं खोल देगा।


IE7 / 8

यह फ़ायरफ़ॉक्स या क्रोम 3 में काम करता है


IE9

(परीक्षण किया)

IE9 एक काला भेड़ है, क्योंकि यह जावास्क्रिप्ट को किसी भी कंट्रोल पर कब्जा करने की अनुमति नहीं देता है ? कुंजीपटल घटना मैंने कई कीबोर्ड संयोजन (आर, टी, पी, एस, एन, टी) के साथ परीक्षण किया और न ही काम किया। साथ ही एम्बेड किए गए एप्लिकेशन ईवेंट को कैप्चर नहीं कर सकते। यूट्यूब वीडियो के साथ परीक्षण किया


महान लिंक के लिए @ समय के लिए धन्यवाद

मार्च 20, 2012 तक, एक क्रोम फिक्स हुआ है जो वेब एप्लिकेशन को जेएस कुंजीडाउन इवेंट में क्रोम में कंट्रोल + एनडब्ल्यूटी को नियंत्रित करने की अनुमति देता है (इसलिए यह शुद्ध जावास्क्रिप्ट, या कोई लाइब्रेरी जैसे jQuery में काम करता है)।

यह तय करने के लिए जावास्क्रिप्ट इस कुंजी संयोजन को संभाल करने की अनुमति देता है अगर क्रोम को एप्लिकेशन मोड में खोला जाता है, जो इस तरह से किया जा सकता है:

  • ऐप्लिकेशन मोड में Google Chrome प्रारंभ करना

फ़िक्स को यहां प्रलेखित किया गया है:

  • ऐप मोड में एक टैब खोले जाने पर शॉर्टकट कुंजी फ़िल्टर न करें (उर्फ: खिड़की या पॉप-अप मोड)।

अन्य उत्तरों पर विस्तार करने के लिए:

क्रोम / क्रोमियम में निश्चित संयोजनों को अवरुद्ध करने के लिए कोड यहां परिभाषित किया गया है , इम् सार, F11 फुलस्क्रीन मोड से बाहर निकलने के लिए और टैब्स या खिड़की से छेड़छाड़ और नेविगेट करने वाली हर चीज को अवरुद्ध कर दिया गया है:

[ शिफ्ट ] Ctrl ( क्यू | एन | डब्ल्यू | टी | टैब ↹ )

जवाब वास्तव में सरल है: जावास्क्रिप्ट में कुछ गुर के बिना यह सीधे संभव नहीं है।

यह ब्राउज़र पर निर्भर करता है अधिकतर सभी ब्राउज़र इस शॉर्टकट को पकड़ते हैं और इसे अपने स्वयं के ईवेंट के लिए उपयोग करते हैं (जैसे कि नए टैब खोलें) शॉर्टकट कभी जावास्क्रिप्ट इंजन तक नहीं पहुंचता है।

फ्लैश के साथ शॉर्टकट को पकड़ने के लिए आसान क्या है, हालांकि लेकिन यह एक उपयोगकर्ता के अनुकूल वेबसाइट से बहुत दूर है।

अद्यतन करें:

यहाँ एक छोटा उदाहरण है अधिकतर सभी ब्राउज़र चेतावनी दिखाएंगे जब Ctrl + y दबाया जाता है। (y = 89)

 document.onkeydown = keyDownEvent; document.onkeyup = keyUpEvent; var isCtrl = false; function keyDownEvent() { var keyid = event.keyCode; if(keyid == 17) { isCtrl = true; } } function keyUpEvent() { var keyid = event.keyCode; if(keyid == 17) { isCtrl = false; } if(keyid == 89 && isCtrl == true) { alert('CTRL-Y pressed'); } } 

यदि आप 84 से 89 को बदलते हैं, जो एक टी का प्रतिनिधित्व करता है , तो कुछ भी नहीं होगा। आप इसे jsfiddle.net पर आज़मा सकते हैं

Ctrl + W हॉटकी को फँसने के बजाय, पता लगाएँ कि जब विंडो बंद है, तो एक वैध विकल्प हो सकता है:

"जब से खिड़की, दस्तावेज और इसके संसाधनों को उतारने के बारे में हैं, तब से पहले से पहले घटना को निकाल दिया जाता है।

जब कोई रिक्त स्ट्रिंग रिटर्नवैल्यू इवेंट गुण को असाइन किया जाता है, तो एक डायलॉग बॉक्स दिखाई देता है, जो उपयोगकर्ताओं को पृष्ठ छोड़ने की पुष्टि करने के लिए कहता है (नीचे दिए गए उदाहरण देखें)। जब कोई मान प्रदान नहीं किया जाता है, तो घटना चुपचाप पर संसाधित होती है। "