检查NW.js中WebKit上下文何时可用

Est*_*ask 12 node.js node-webkit nw.js

在Node context(node-main)中执行时,

setTimeout(function () {
    console.log(nw);
}, 20);
Run Code Online (Sandbox Code Playgroud)

投

nw未定义

因为WebKit上下文没有准备好(从windowNW.js <= 0.12开始,window.nw在NW.js> = 0.13中,从一开始就不可用).和

setTimeout(function () {
    console.log(nw);
}, 200);
Run Code Online (Sandbox Code Playgroud)

工作正常,但setTimeout看起来像一个黑客,将其设置为安全延迟值可能会导致不良后果.

如何nw从Node上下文中检查WebKit上下文的可用性?有没有合理的方式,比如可以处理的事件?

Est*_*ask 1

我最初提出的解决方案看起来像

应用程序-node.js

process.once('webkit', () => {
    console.log(nw);
});
Run Code Online (Sandbox Code Playgroud)

应用程序.html

<html>
<head>
    <script>
        global.process.emit('webkit');
    </script>
    ...
Run Code Online (Sandbox Code Playgroud)

我很高兴知道已经有一个事件可供监听,因此跨平台客户端脚本可以省略与 NW 相关的代码。