2015-03-28 2 views
2

Я делаю приложение, использующее атомную оболочку, которая должна загружать несколько html-страниц. Каждый раз, когда я загружаю другую страницу, мне нужно выполнить какой-то пользовательский скрипт. Для этого я использую 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'); 

ответ

11

BrowserWindow расширяет EventEmitter, так что вы бы удалить слушатель так же, как правило, будет в Node.js:

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

// Later: 
mainWindow.webContents.removeListener('did-finish-load', handler); 
+1

Привет, IM новый электрон, если тот же EventEmitter как nodejs, как только метод может легко справиться с этим. https://nodejs.org/api/events.html#events_emitter_once_event_listener, не так ли? –

+0

Это хороший момент, и да, это тоже должно работать. Полагаю, я ответил на вопрос, возможно, слишком прямо, поскольку это связано с регистрацией слушателя. –

 Смежные вопросы

  • Нет связанных вопросов^_^