Я ранее писал (а) этот вопрос Stacking of Context Menus in Electron и создал этот вопрос в context menu module for electron.Как удалить регистрацию контекстного меню listerners в электронном
Несмотря на то, что мой вопрос выше довольно подробный, он не получил ответов. Затем, @sindresorhus рекомендуется задать этот вопрос в StackOverflow:
Как отключить контекстное меню в электронном? У меня есть программа, в которой, в зависимости от того, где вы щелкнули, другое контекстное меню будет отображаться:
handleContextMenu() {
this.props.contextMenu({
prepend: (params, browserWindow) => [{
label: `Summary ${this.state.msn}`,
click:() => this.createSummary()
},{
label: `Library Compare ${this.state.msn}`,
click:() => this.runLibCompare()
},{
label: `Visualize ${this.state.msn}`,
click:() => dialog.showMessageBox({
type: 'question',
buttons: this.vizButtons,
defaultId: 0,
title: `Choose your visualization`,
message: `Choose your visualization for ${this.state.msn}.`,
}, res => this.visualize(res))
}]
});
};
Однако, когда я щелкните правой кнопкой мыши на другой области, первое контекстное меню всплывает, то второй, пока не появится текущее контекстное меню.
Я в основном хочу удалить регистрационное меню после его увольнения. Как мне это сделать?
Update: Избавился контекстного меню и просто подают это handleContextMenu
функции:
handleContextMenu = menuItems => {
const menu = new electron.remote.Menu();
menu.append(new electron.remote.MenuItem(menuItems));
menu.popup(electron.remote.getCurrentWindow());
}
И это работает! Вот так, избавился от электронного контекстного меню.
Нет. Я заменил свой код вашим точным предложением, и я до сих пор получаю эффект укладки. Теперь он говорит n ... n-1 ... 3 ... 2 ... 1 –
Интересно, если я нужно придумать способ удалить меню из eventLisenter? –
Ой, подождите ... Думаю, я понял. Я удалил window.addEventListener, и он, кажется, не повторяется. Позвольте мне рассказать об этом еще –