बहुत से संभावित keyCode (उदा: हॉटकी के लिए) के साथ काम करते समय, हम एक switch कथन का उपयोग करना चाहेंगे।

हम अन्य कंस्ट्रक्टर हॉटकी को संरक्षित करने के लिए Ctrl + एक अन्य कुंजी के सभी संयोजनों को रोकना नहीं चाहते हैं।

हम केवल परिभाषित मामलों के लिए डिफ़ॉल्ट कार्रवाई को रोकना चाहते हैं। लेकिन एक बार ऐसा कैसे करें?

मुझे लगता है कि मैं वास्तव में कुछ स्पष्ट याद कर रहा हूँ।

document.addEventListener("keydown", function(e) {
  var key = e.keyCode || e.which;
  if (!e.ctrlKey) return false;

    switch(key) {
      case 109: e.preventDefault(); scale(-1); break;
      case 107: e.preventDefault(); scale(1); break;
      case 96: e.preventDefault(); scale(0);break;
      case 78: e.preventDefault(); newFile();break;
      case 79: e.preventDefault(); openFile();break;
      case 80: e.preventDefault(); printFile();break;
      case 83: e.preventDefault(); saveFile();break;
      case 66: e.preventDefault(); command("bold");break;
      case 73: e.preventDefault(); command("italic");break;
      case 85: e.preventDefault(); command("underline");break;
      case 76: e.preventDefault(); command("justifyLeft");break;
      case 69: e.preventDefault(); command("justifyCenter");break;
      case 82: e.preventDefault(); command("justifyRight");break;
      case 74: e.preventDefault(); command("justifyFull");break;
      case 90: e.preventDefault(); clipboard.undo();break;
      case 89: e.preventDefault(); clipboard.redo();break;
      default: console.log("Key pressed n°", key)
    }
}, false);
1
Loarg Ann 18 अप्रैल 2020, 15:21

1 उत्तर

सबसे बढ़िया उत्तर

आप बस एक वेरिएबल prevent का उपयोग कर सकते हैं जो केवल डिफ़ॉल्ट स्थिति में true पर सेट है। फिर e.preventDefault() स्विच स्टेटमेंट के बाद इस प्रकार करें:

document.addEventListener("keydown", function(e) {
  var key = e.keyCode || e.which;
  if (!e.ctrlKey) return false;

    var prevent = true;

    switch(key) {
      case 109: scale(-1); break;
      case 107: scale(1); break;
      case 96: scale(0);break;
      case 78: newFile();break;
      case 79: openFile();break;
      case 80: printFile();break;
      case 83: saveFile();break;
      case 66: command("bold");break;
      case 73: command("italic");break;
      case 85: command("underline");break;
      case 76: command("justifyLeft");break;
      case 69: command("justifyCenter");break;
      case 82: command("justifyRight");break;
      case 74: command("justifyFull");break;
      case 90: clipboard.undo();break;
      case 89: clipboard.redo();break;
      default: prevent = false; console.log("Key pressed n°", key); break;
    }

    if (prevent) e.preventDefault();
}, false);
1
omnidan 18 अप्रैल 2020, 12:45