2017-01-23 1 views
0

전자로 앱을 작성하고 몇 가지 문제가 발생했습니다. 누구든지 도움을 주시면 감사하겠습니다.전자 웹 뷰 이벤트

나는 웹보기에 SRC를로드하는거야 = "에 대해 : 빈"DOM을 준비 이벤트가 트리거 될 때 지금

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

로드는, 내가

전화 해요

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

webview로드가 끝나고 'did-finish-load'이벤트가 두 번 발생하면 회 전자 중지를 시도하고 있습니다. 이로 인해 몇 초 동안 빈 페이지가 표시됩니다.

단서가있는 사람이 있습니까? 설명서를 다시 보았지만 설명이 올바르지 않습니다. 모든 리소스를 다운로드하고 표시 할 준비가 된 후 이벤트가 트리거에 있습니까?

답변

0

'did-finish-load'이벤트는 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`) 
    

그런 다음 한 마무리 부하가 트리거 된 것을 알 수 있습니다!
그 이유는 이벤트가 코드에서 두 번 트리거되기 때문입니다.

여기서 중요한 부분은 BrowserWindows와 webviews의 속성 인 webContents EventEmitter입니다.
예제를 최소화하기 위해 BrowserWindow를 사용했습니다.

0

재생 해 주셔서 감사합니다. 당신은 내가 "의"사용 했어야 옳다하지 "또는 addEventListener는" 그래서이가 나를 위해, 사용하는 대신 고정 :

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

내가 사용 : 그것은 도움이

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

다행.
webview.webContents 대신 webview.getWebContents()를 직접 사용할 수 있습니다.
질문을 "대답 함"으로 표시하는 것을 잊지 마십시오.