javascript - nw.js两个窗口之间如何传递数据
阿神
阿神 2017-04-10 16:14:15
0
3
1147

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

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

阿神
阿神

闭关修行中......

모든 응답(3)
阿神

可以用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的事件:
文档

Ty80

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

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

看看electron吧~~~

Peter_Zhu

在我们公司的项目中不同的的窗口都传递数据是通过,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可以获取到传来的对象。

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿