如何取消注册电子事件?

d--*_*--b 4 electron

我正在使用需要加载几个html页面的atom-shell创建一个应用程序.每次加载不同的页面时,我都需要执行一些自定义脚本.为此,我正在使用mainWindow.webContents.on('did-finish-load', ...).但由于我需要为每个文件都有一个自定义函数,我想从did-finish-load事件中取消注册.

例:

mainWindow.webContents.on('did-finish-load',function() {
    console.log('loaded page1');
    mainWindow.webContents.unregister('did-finish-load') // <= does that exist?
});
mainWindow.loadUrl('file://.../page1.html');
Run Code Online (Sandbox Code Playgroud)

Ken*_*iro 15

BrowserWindowextends EventEmitter,因此您将以与Node.js中通常相同的方式删除侦听器:

var handler = function () {
    // ...
};
mainWindow.webContents.on('did-finish-load', handler);

// Later:
mainWindow.webContents.removeListener('did-finish-load', handler);
Run Code Online (Sandbox Code Playgroud)

  • 嗨,我是电子新手,如果它是与nodejs相同的EventEmitter,once方法可以轻松处理。https://nodejs.org/api/events.html#events_emitter_once_event_listener,是吗? (2认同)