Home  >  Q&A  >  body text

javascript - nw.js两个窗口之间如何传递数据

nw.js两个窗口之间如何传递数据?
找了半天只找到这么一句,也不知道具体怎么用。

Window.eval(frame, script)在目标window或者iframe中执行javascript代码段。script参数是要执行的javascript代码

阿神阿神2750 days ago1102

reply all(3)I'll reply

  • 阿神

    阿神2017-04-10 16:16:15

    可以用globalglobalnodejs的顶层对象,在nw.jsglobal是所有窗口共享的。
    我自己实现的简单窗口事件机制:

    global.broadcaster = {
        _events: {},
        publish: function (event, data) {
            if (!this._events[event]) return; // no one is listening to this event
            for (var i = 0; i < this._events[event].length; i++)
                this._events[event][i](data);
        },
        subscribe: function (event, callback) {
            if (!this._events[event]) this._events[event] = []; // new event
            this._events[event].push(callback);
        },
        clear: function(event){
            if (this._events[event]) delete this._events[event];
        }
    };

    也可以用nodejs的事件:
    文档

    reply
    0
  • PHP中文网

    PHP中文网2017-04-10 16:16:15

    Window.eval(frame, script);
    在执行的窗口中执行执行的script脚本
    当frame为null时,那么就在当前窗口执行或当前的iframe中执行
    script为字符串显示的JS脚本,就如在浏览器环境中调用eval函数的用法。

    nw.js 大半年都没有动静喽

    看看electron吧~~~

    reply
    0
  • 天蓬老师

    天蓬老师2017-04-10 16:16:15

    在我们公司的项目中不同的的窗口都传递数据是通过,global.winManager.openOnce()方法
    例如

    let optionObj = {}
    let data = {
        name: 'ZenoTian'
    }
    global.winManager.openOnce('routerName', optionObj, data)

    第一个参数是窗口路由参数。第二个是窗口的属性,配置了窗口路由可以传一个空对象进去。第三个参数可以传递数据,包括函数,函数可以跨窗口执行。

    如何在新窗口拿到数据?

    let data = window.global._winRefs['routerName'].data || {}
    console.log(data.name) //'ZenoTian'

    在新窗口使用_winRefs可以获取到传来的对象。

    reply
    0
  • Cancelreply