nw.js两个窗口之间如何传递数据?
找了半天只找到这么一句,也不知道具体怎么用。
Window.eval(frame, script)
在目标window
或者iframe
中执行javascript代码段。script
参数是要执行的javascript代码
阿神2017-04-10 16:16:15
可以用global
,global
是nodejs
的顶层对象,在nw.js
里global
是所有窗口共享的。
我自己实现的简单窗口事件机制:
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
的事件:
文档
PHP中文网2017-04-10 16:16:15
Window.eval(frame, script);
在执行的窗口中执行执行的script脚本
当frame为null时,那么就在当前窗口执行或当前的iframe中执行
script为字符串显示的JS脚本,就如在浏览器环境中调用eval函数的用法。
nw.js 大半年都没有动静喽
看看electron吧~~~
天蓬老师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可以获取到传来的对象。