जवाबों:
$(window).keypress(function(event) {
if (!(event.which == 115 && event.ctrlKey) && !(event.which == 19)) return true;
alert("Ctrl-S pressed");
event.preventDefault();
return false;
});
कुंजी कोड ब्राउज़रों के बीच भिन्न हो सकते हैं, इसलिए आपको केवल 115 से अधिक की जांच करने की आवश्यकता हो सकती है।
keydownबजाय का उपयोग करेंkeypress
यह मेरे लिए काम करता है (अधिक उपयोग करने के लिए jquery) Ctrl+ S, Ctrl+ Fऔर Ctrl+ G:
$(window).bind('keydown', function(event) {
if (event.ctrlKey || event.metaKey) {
switch (String.fromCharCode(event.which).toLowerCase()) {
case 's':
event.preventDefault();
alert('ctrl-s');
break;
case 'f':
event.preventDefault();
alert('ctrl-f');
break;
case 'g':
event.preventDefault();
alert('ctrl-g');
break;
}
}
});
else ifकाम नहीं करेगा क्योंकि मूल ifकथन पहले से ही सच के रूप में मूल्यांकन किया जाएगा। मूल ifकथन को मूल में बदलने से पहले आपको अपना कोड रखना होगा else if।
आप ब्राउज़र विशिष्ट सामान को संभालने के लिए एक शॉर्टकट लाइब्रेरी का उपयोग कर सकते हैं ।
shortcut.add("Ctrl+S",function() {
alert("Hi there!");
});
यह jQuery समाधान मेरे लिए Chrome और Firefox में Ctrl+ Sऔर Cmd+ दोनों के लिए काम करता है S।
$(document).keydown(function(e) {
var key = undefined;
var possible = [ e.key, e.keyIdentifier, e.keyCode, e.which ];
while (key === undefined && possible.length > 0)
{
key = possible.pop();
}
if (key && (key == '115' || key == '83' ) && (e.ctrlKey || e.metaKey) && !(e.altKey))
{
e.preventDefault();
alert("Ctrl-s pressed");
return false;
}
return true;
});
e.keyइसके बजाय उपयोग करें e.which;
यह मेरे लिए क्रोम पर काम करता है ... किसी कारण से मेरे लिए event.whichएक राजधानी एस (83) लौटाता है, यह सुनिश्चित नहीं है कि (कैप लॉक राज्य की परवाह किए बिना) इसलिए मैंने इस्तेमाल किया fromCharCodeऔर toLowerCaseबस सुरक्षित पक्ष पर होना चाहिए
$(document).keydown(function(event) {
//19 for Mac Command+S
if (!( String.fromCharCode(event.which).toLowerCase() == 's' && event.ctrlKey) && !(event.which == 19)) return true;
alert("Ctrl-s pressed");
event.preventDefault();
return false;
});
अगर किसी को पता है कि मुझे 83 और 115 क्यों नहीं मिलते हैं , तो मुझे यह सुनकर खुशी होगी, अगर कोई अन्य ब्राउज़रों पर यह परीक्षण करता है तो मुझे यह सुनने में खुशी होगी कि यह काम करता है या नहीं
मैंने फायरफॉक्स, आईई और क्रोम का समर्थन करने के लिए कुछ विकल्प संयुक्त किए। मैं भी इसे बेहतर समर्थन मैक के लिए अद्यतन किया है
// simply disables save event for chrome
$(window).keypress(function (event) {
if (!(event.which == 115 && (navigator.platform.match("Mac") ? event.metaKey : event.ctrlKey)) && !(event.which == 19)) return true;
event.preventDefault();
return false;
});
// used to process the cmd+s and ctrl+s events
$(document).keydown(function (event) {
if (event.which == 83 && (navigator.platform.match("Mac") ? event.metaKey : event.ctrlKey)) {
event.preventDefault();
save(event);
return false;
}
});
मैं चाहूंगा कि वेब एप्लिकेशन ईमानदारी से, मेरी डिफ़ॉल्ट शॉर्टकट कुंजियों को ओवरराइड न करें। Ctrl+ Sपहले से ही ब्राउज़रों में कुछ करता है। जिस साइट पर मैं देख रहा हूं, उस पर निर्भर करते हुए अचानक परिवर्तन करना विघटनकारी और निराशाजनक है, अक्सर छोटी गाड़ी का उल्लेख नहीं करना। मेरे पास साइटें हाइजैक हैं Ctrl+ Tabक्योंकि यह वैसी ही दिखती थीCtrl + I, दोनों साइट पर मेरे काम को बर्बाद कर रहे हैं और मुझे हमेशा की तरह टैब स्विच करने से रोक रहे हैं।
यदि आप शॉर्टकट कुंजियाँ चाहते हैं, तो accesskeyविशेषता का उपयोग करें । कृपया मौजूदा ब्राउज़र कार्यक्षमता को न तोड़े।
@ ईवे: जैसा कि ब्राउज़र अमीर और समृद्ध कार्यक्षमता के लिए घर बन जाता है और डेस्कटॉप ऐप्स को बदलना शुरू कर देता है, यह कीबोर्ड शॉर्टकट के उपयोग से गुजरने का विकल्प नहीं है। आउटलुक को त्यागने की मेरी इच्छा में जीमेल के समृद्ध और कीबोर्ड सेटों का सहज योगदान था। टोडोइस्ट, Google रीडर, और Google कैलेंडर में कीबोर्ड शॉर्टकट मेरी ज़िंदगी को दैनिक आधार पर बहुत आसान बनाते हैं।
डेवलपर्स को निश्चित रूप से सावधान रहना चाहिए कि उन कीस्ट्रोक्स को ओवरराइड न करें जो पहले से ही ब्राउज़र में अर्थ रखते हैं। उदाहरण के लिए, WMD टेक्स्टबॉक्स मैं अनावश्यक रूप से इंटरप्रिट Ctrl+ के Delरूप में टाइप कर रहा हूं "डिलीट वर्ड फॉरवर्ड" के बजाय "ब्लॉकक्वाओट"। मुझे उत्सुकता है अगर "ब्राउज़र-सुरक्षित" शॉर्टकट की कहीं मानक सूची है जिसे साइट डेवलपर उपयोग कर सकते हैं और जो ब्राउज़र भविष्य के संस्करणों से दूर रहने के लिए प्रतिबद्ध होंगे।
$(document).keydown(function(e) {
if ((e.key == 's' || e.key == 'S' ) && (e.ctrlKey || e.metaKey))
{
e.preventDefault();
alert("Ctrl-s pressed");
return false;
}
return true;
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
Try pressing ctrl+s somewhere.
यह @ एलनबेलोज़ के उत्तर की जगह अप-टू-डेट संस्करण है which जिसके साथ किया गया है key। यह भी क्रोम की राजधानी कुंजी गड़बड़ (जहां अगर आप प्रेस के साथ भी काम करता है Ctrl+ Sयह राजधानी भेजता रों के बजाय रों)। सभी आधुनिक ब्राउज़रों में काम करता है।
यह मेरा समाधान था, जो अन्य सुझावों की तुलना में यहां पढ़ने के लिए बहुत आसान है, आसानी से अन्य प्रमुख संयोजनों को शामिल कर सकते हैं, और IE, क्रोम और फ़ायरफ़ॉक्स पर परीक्षण किया गया है:
$(window).keydown(function(evt) {
var key = String.fromCharCode(evt.keyCode);
//ctrl+s
if (key.toLowerCase() === "s" && evt.ctrlKey) {
fnToRun();
evt.preventDefault(true);
return false;
}
return true;
});
String.fromCharCode। हालाँकि, Mac में नियंत्रण कुंजी नहीं है। के साथ कमांड कुंजी के लिए टेस्ट करें evt.metaKey। यह trueविंडोज पर मैक और विन पर Cmd के लिए लौटता है ।
मुझे यह छोटा सा प्लगइन पसंद है । यह थोड़ा और अधिक ब्राउज़र मित्रता की जरूरत है।
यह काम करना चाहिए ( https://stackoverflow.com/a/8285722/388902 से अनुकूलित )।
var ctrl_down = false;
var ctrl_key = 17;
var s_key = 83;
$(document).keydown(function(e) {
if (e.keyCode == ctrl_key) ctrl_down = true;
}).keyup(function(e) {
if (e.keyCode == ctrl_key) ctrl_down = false;
});
$(document).keydown(function(e) {
if (ctrl_down && (e.keyCode == s_key)) {
alert('Ctrl-s pressed');
// Your code
return false;
}
});
उदाहरण:
shortcut.add("Ctrl+c",function() {
alert('Ok...');
}
,{
'type':'keydown',
'propagate':false,
'target':document
});
प्रयोग
<script type="text/javascript" src="js/shortcut.js"></script>
डाउनलोड के लिए लिंक: http://www.openjs.com/scripts/events/keyboard_shortcuts/#
एलन बेलोज़ का उत्तर: (e.altKey) उन उपयोगकर्ताओं के लिए जोड़ा गया है जो AltGrटाइपिंग करते समय उपयोग करते हैं (जैसे पोलैंड)। बिना इस दबाने AltGr+ Sके रूप में ही परिणाम प्राप्त होगा Ctrl+S
$(document).keydown(function(e) {
if ((e.which == '115' || e.which == '83' ) && (e.ctrlKey || e.metaKey) && !(e.altKey))
{
e.preventDefault();
alert("Ctrl-s pressed");
return false;
}
return true; });
मेरे द्वारा बनाया गया यह प्लगइन सहायक हो सकता है।
आप इस प्लगइन का उपयोग कर सकते हैं जिसे आपको कुंजी कोड्स की आपूर्ति करनी है और इस तरह से चलाया जा सकता है
simulatorControl([17,83], function(){
console.log('You have pressed Ctrl+Z');
});
कोड में मैंने दिखाया है कि कैसे Ctrl+ के लिए प्रदर्शन करना है S। आपको लिंक पर विस्तृत दस्तावेज़ मिलेगा। प्लगइन कोडीन पर मेरे पेन के जावास्क्रिप्ट कोड अनुभाग में है।
मैंने IE पर अपनी समस्या को हल किया , alert("With a message")डिफ़ॉल्ट व्यवहार को रोकने के लिए एक का उपयोग करके :
window.addEventListener("keydown", function (e) {
if(e.ctrlKey || e.metaKey){
e.preventDefault(); //Good browsers
if (navigator.userAgent.indexOf('MSIE') !== -1 || navigator.appVersion.indexOf('Trident/') > 0) { //hack for ie
alert("Please, use the print button located on the top bar");
return;
}
}
});