簡體   English   中英

電子事件多次觸發

[英]Electron event fires multiple times

我有一頁,通過jquery加載新元素。 我有具有事件監聽器的頁面

ipcRenderer.send('getlist');
ipcRenderer.once('return:list', function (e, l, wn) {
    console.log('a');
    for(let i = 0; i < l.length; i++) {
        $('.a').append('<div>'+l[i]+wn[i]'</div>');
    }
    $('.a').append('<div>End</div>');
});

將數據發送到頁面的代碼:

ipcMain.on('getlist', function (e) {
    wn = [];
    cfg['a'].forEach(s => {
        wn.push(yaml.readSync('charcfg.yaml')['name']);
    });
    mainWindow.webContents.send('return:list', cfg['a'], wn);
});

直到我加載另一個頁面,然后再次加載該頁面,它的工作原理才是完美的。 此事件會觸發多次。 每當我回到此頁面時,它就會遍歷多次。

我嘗試使用

ipcRenderer.once('someevent', function(e, l){...}); 

只能一次使用。 在第三次重新加載時,它會再次開始執行監聽程序。

此腳本的代碼隨頁面一起加載!

對不起我的英語不好。 產量

通過jQuery加載頁面的功能:

const htmlContent = $('.content');
function setContent(s) {
    $('.content').animate({
        opacity: 0
    }, 200, function () {
        setTimeout(function () {
            htmlContent.load(s + '.html');
            $('.content').animate({
                opacity: 1
            }, 200);
        }, 100);
    });
}

實際上,有兩個聽眾走了兩次。

綁定到加載頁面的按鈕的是ipcRenderer.on (替換為.once )和jquery.on('click') 使用jquery.unbind().on('click')修復了此問題。

謝謝您的幫助,obermillerk。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM