5

में Chrome कीबोर्ड शॉर्टकट ओवरराइड मैं एक user script जब दबाने CTRL + शिफ्ट + बी है कि एक पाठ क्षेत्र में चयनित पाठ पर एक निश्चित कार्रवाई निष्पादित लिखा था।एक उपयोगकर्ता स्क्रिप्ट

यह टेक्स्टरेरा के लिए keypress ईवेंट पंजीकृत करके और दबाए गए कुंजी की जांच करके किया जाता है। कुंजी संयोजन को संभालने से ब्राउज़र को रोकने के लिए मैं preventDefault() विधि का उपयोग कर रहा हूं जो फ़ायरफ़ॉक्स में ठीक काम करता है (लाइब्रेरी विंडो खोला नहीं गया है लेकिन इसके बजाय मेरा कोड निष्पादित किया गया है)।

हालांकि, क्रोम में वह कुंजी संयोजन बुकमार्क बार खोलता है और keypress ईवेंट भी ट्रिगर नहीं होता है।

मुझे आश्चर्य है कि क्रोम में ऐसा शॉर्टकट बनाने का कोई तरीका है या नहीं। इसे एक उपयोगकर्तास्क्रिप्ट के साथ काम करने की ज़रूरत है - वास्तविक एक्सटेंशन एक विकल्प नहीं है क्योंकि मैं फ़ायरफ़ॉक्स और क्रोम के लिए दो अलग-अलग "संस्करण" को बनाए रखना पसंद नहीं करता।

उत्तर

5

जाहिर है, क्रोम यूआई keydown बजाय keypress के बंद से चलाता है (This Quirksmode article क्यों सुझाव दे सकते हैं - keypressचाहिए जब एक वास्तविक चरित्र डाला जा रहा है सक्रिय किया जाता है)।

तो के लिए उपयुक्त लाइन बदल रहा है:

$(document).on('keydown', '.wmd-input', function(e) { 

दोनों एफएफ और क्रोम पर काम करने लगता है।

+0

क्या यह मूल कीबोर्ड शॉर्टकट को ओवरराइड/अक्षम करेगा या क्या वे दोनों आग लगेंगे? – Patrick

+0

@ पैट्रिक, निर्भर करता है। 'रोकथाम डीफॉल्ट() ',' स्टॉपप्रॉपेशन() ',' स्टॉपइमीडिएटप्रॉपेशन()', आदि देखें –