2017-01-23 63 views
0

我正在写一个电子应用程序,遇到了一些问题,感谢任何人都可以提供帮助。电子webview事件

我加载到一个网页介面SRC =“有关:空白”与

var urlOptions = { 
    extraHeaders: 'Authorization: Bearer ' + arg.token 
}; 
webview.loadURL(arg.viewToLoad, urlOptions); 
现在

,并加载它,当DOM就绪事件触发,我打电话

webview.addEventListener('did-finish-load',()=> spiner.hide());

我想在webview完成加载后停止微调,但'did-finish-load'事件触发两次 - 这会导致几秒钟的空白页。

有没有人有线索为什么? 我再次查看了文档,但这不解释正确,有没有事件触发器一次资源完成下载并准备显示?

回答

0

'did-finish-load'事件被触发2次:当您加载about:blank和使用loadURL()时。

  • 说服你,试试这个:
    main.js:

    const { BrowserWindow} = require('electron') 
    let win = new BrowserWindow({width: 1450, height: 1200}) 
    win.webContents.on('did-finish-load',() => { 
        console.log('finished to load ') 
        }) 
    win.loadURL(`about:blank`) 
    

然后你会发现,做精加工负荷已触发!
这就是为什么事件在您的代码中触发2次。

请注意,这里的重要部分是webContents EventEmitter,它是BrowserWindows和webviews的一个属性。
我用一个BrowserWindow保持最小的例子。

0

谢谢您的重播。 你是对的,我应该用“上”,而不是“的addEventListener” 所以这个固定为我的那个,而不是使用:

webview.addEventListener('did-finish-load',() => spiner.hide()); 

我用:

webview.getWebContents().on('did-finish-load',() => spiner.hide()); 
0

高兴它帮助。
请注意,您可以直接使用webview.webContents而不是webview.getWebContents()。
不要忘记将问题标记为“已回答”