javascript - nw.js两个窗口之间如何传递数据
阿神
阿神 2017-04-10 16:14:15
[JavaScript讨论组]

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

PHP中文网

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

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

看看electron吧~~~

天蓬老师

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号