2015-01-07 20 views
5

में बैकस्पेस को अक्षम करें मैं ब्राउज़र विंडो के भीतर backspace कुंजी की back() कार्यक्षमता को अक्षम करने का तरीका जानने के लिए इंटरवेब्ज़ और एटम-शैल दस्तावेज़ों को स्कोअर कर रहा हूं।एटम-शैल

मैं जावास्क्रिप्ट onkeydown श्रोता (जो काम करता है) का सहारा लेना पसंद नहीं करना चाहूंगा और ब्राउज़र विंडो स्तर के बजाय कुछ और मूल और एप्लिकेशन स्तर पर अधिक उपयोग करना पसंद नहीं करेगा।

उत्तर

2

एक ही रास्ता मैं पता लगा है onkeydown श्रोता के बिना यह करने के लिए एक वैश्विक-शॉर्टकट और इलेक्ट्रॉन एपीआई में भारतीय दंड संहिता की घटनाओं के साथ है।

पहले एक अस्वीकरण ...

एक वैश्विक शॉर्टकट के साथ किसी भी कुंजी को अक्षम करने से वास्तव में विश्व स्तर आपके कंप्यूटर पर अक्षम कर करता है! ग्लोबल शॉर्टकट का उपयोग करते समय सावधानी बरतें! यदि आप अपने शॉर्टकट को अनधिकृत करना भूल जाते हैं, या इसे सही तरीके से संभाल नहीं पाते हैं, तो आपको बैकस्पेस के बिना अपनी गलती को ठीक करना मुश्किल लगेगा!

ने कहा कि यह क्या मेरे लिए काम किया है ...

const { app, ipcMain, 
    globalShortcut, 
    BrowserWindow, 
} = require('electron'); 

app.on('ready',() => { 

    // Create the browser window 
    let mainWindow = new BrowserWindow({width: 800, height: 600}); 

    // and load the index.html of the app 
    mainWindow.loadUrl('file://' + __dirname + '/index.html'); 

    // Register a 'Backspace' shortcut listener when focused on window 
    mainWindow.on('focus',() => { 

     if (mainWindow.isFocused()) { 
      globalShortcut.register('Backspace',() => { 

       // Provide feedback or logging here 
       // If you leave this section blank, you will get no 
       // response when you try the shortcut (i.e. Backspace). 

       console.log('Backspace was pressed!'); //comment-out or delete when ready. 
      }); 
     }); 
    }); 

    // ** THE IMPORTANT PART ** 
    // Unregister a 'Backspace' shortcut listener when leaving window. 
    mainWindow.on('blur',() => { 

     globalShortcut.unregister('Backspace'); 
     console.log('Backspace is unregistered!'); //comment-out or delete when ready. 
    }); 
}); 

वैकल्पिक रूप से आप एक भारतीय दंड संहिता "टॉगल" घटना इस तरह हैंडलर के अंदर शॉर्टकट जोड़ सकते हैं ...

// In the main process 
ipcMain.on('disableKey-toggle', (event, keyToDisable) => { 
    if (!globalShortcut.isRegistered(keyToDisable){ 

     globalShortcut.register(keyToDisable,() => { 
      console.log(keyToDisable+' is registered!'); //comment-out or delete when ready. 

     }); 
    } else { 

     globalShortcut.unregister(keyToDisable); 
     console.log(keyToDisable+' is unregistered!'); //comment-out or delete when ready. 
    } 
}); 

// In the render process send the accelerator of the keyToDisable. 
// Here we use the 'Backspace' accelerator. 
const { ipcRenderer } = require('electron'); 
ipcRenderer.send('disableKey-toggle', 'Backspace'); 
+0

तुम क्यों होगा पूरे एप्लिकेशन के लिए बैकस्पेस कुंजी को अवरुद्ध करें? आप इसे "सामान्य" जावास्क्रिप्ट के साथ अपने अग्रभाग/रेंडरर में अवरुद्ध कर सकते हैं, [यहां स्टैक ओवरफ्लो पर] [http://stackoverflow.com/a/2768256/1435377) (या उस उत्तर के नीचे एक समान उत्तर)। :) मुझे पता है कि विषय स्टार्टर ने नोडजेस के लिए पूछा है ... अभी भी क्यों नहीं मिलता है - लोगों को इस तरह से ध्यान में रखना चाहिए ... ( –

+1

मैं मानता हूं, यह आमतौर पर सबसे आसान तरीका है। हालांकि, इस सवाल से पूछा गया कि इलेक्ट्रॉन और * नहीं * जावास्क्रिप्ट का उपयोग करके इसे कैसे किया जाए। मुझे लगता है कि एक अधिक लागू उपयोग केस होगा: यदि आप एक विंडो को एक अलग एप्लिकेशन या सिस्टम संवाद खोलते हैं जहां आप कुंजी को अवरुद्ध करना (ब्लॉक नहीं करना) जारी रखना चाहते हैं -दबाएँ। – Josh