2017-01-23 17 views
0

私は電子でアプリを書いていて、いくつかの問題に出くわしました。誰かが助けてくれれば感謝します。電子ウェブビューのイベント

私はWebViewのにSRC = "について:空白の" ロードしています、それは今、DOM-readyイベントがトリガされたとき

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

と負荷を、私は

を呼んでいます

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

webviewの読み込みが終了した後に 'did-finish-load'イベントが2回発生すると、スピナーを停止しようとしています。これにより、ブランクページが数秒間表示されます。

誰かがヒントを持っていますか? ドキュメントをもう一度見てみましたが、これは正しい説明ではありません。すべてのリソースがダウンロードされて表示される準備ができたら、トリガーイベントが1回ありますか?

答えて

0

「did-finish-load」イベントはabout:blankをロードしたときとloadURL()を使用したときの2回トリガーされます。

  • あなたを納得させるために、これを試してみてください。
    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とWebviewの両方の属性です。
例を最小限に抑えるためにBrowserWindowを使用しました。

0

再生いただきありがとうございます。あなたは右の私は、これはその私のために、代わりに使用しての固定「のaddEventListener」 「オン」ではなく使用している必要がありますされている :

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

私が使用:

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

それが助けうれしいし。
webview.getWebContents()の代わりにwebview.webContentsを直接使用できます。
質問に「回答しました」と記入することを忘れないでください。

関連する問題