【问题标题】:How to share data between windows in Node Webkit?如何在 Node Webkit 中的窗口之间共享数据?
【发布时间】:2020-06-24 00:37:29
【问题描述】:

我正在使用 node webkit v0.45,并且需要使用动态参数打开一个新窗口(具有预先确定的 html 布局)。

我能找到的唯一文档建议使用 on "loaded" 事件将数据发送到新窗口,然后处理在新窗口 html 中使用 on "data" 接收的数据,如下所示:

主窗口:

var ngui = require('nw.gui');

var newWindow = ngui.Window.open('newwindow.html', {
    width: 1120,
    height: 360
})

newWindow.on ('loaded', function(){
    var data = {msg: "test"};
    newWindow.emit("data", data);
});

新窗口:

var gui = require('nw.gui');
var win = gui.Window.get();
win.on("data", function(data) {
    console.log(data.msg);
});

然而,在 v0.13 之后,这似乎已被弃用,并且 Window 类不再从 EventEmitter 继承。还有其他的带参数打开窗口的选项吗?

***更新***

打开新窗口时,以下代码将起作用:

var param = 'param';
ngui.Window.open('newWindow.html', {
    width: 1120,
    height: 360,
}, function(newWindow) {
    pageWindow.on('loaded', () => {
        newWindow.window.param = param;
    });
});

在newWindow.html中:

<script>
    function getParam(){
        if (!window.param){
            setTimeout(function(){
                getParam();
            },50);
        } else {
            console.log("Successfully loaded param: '" + window.param + "'");
        }
    }
    getParam();
</script>

【问题讨论】:

    标签: node.js events node-webkit emit


    【解决方案1】:

    Node 上下文可用于共享数据,因为 Node 上下文是跨窗口共享的。

    【讨论】:

    • 当然可以!我没有尝试在“onLoaded”中将变量作为消息传递,而是向 open 函数添加了一个回调,它将所需的参数设置为该窗口的变量。然后可以通过在新窗口中导入/定义的脚本轻松访问这些内容。
    猜你喜欢
    • 1970-01-01
    • 2012-01-19
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-09
    相关资源
    最近更新 更多