Node-Webkit在不同窗口中的启动功能
Node-Webkit start function in different window
我的node-webkit应用程序由一个控件窗口和一个表示窗口组成。
控制窗口收集数据并最终通过window.open
函数启动表示窗口。
表示窗口现在可以访问global
变量中的一些信息。
现在我想通过创建SVG元素等来呈现该信息的图形化表示。
我已经有一个javascript函数来做到这一点,但我需要一些方法从控制窗口启动该函数。
我不能直接调用它,因为函数必须访问其他窗口的DOM。
我试过在其他窗口的对象上使用eval
函数,但这会导致node-webkit崩溃,消息
[18719:0522/205047:ERROR:breakpad_linux.cc(1225)] crash dump file written to
/tmp/chromium-renderer-minidump-788bf8d0c68301d5.dmp
最好的方法是什么?
使用setInterval
定期检查全局变量?
我发现一个非常有效的解决方案是将发布/订阅功能附加到global
变量。到目前为止,我使用的设置是基于jquery的,不过也可以不使用jquery来构建。首先,使用以下代码的变体初始化它:
var messages = messages || {};
global.Message = global.Message || function( id ) {
var callbacks, method,
message = id && messages[ id ];
if ( !message ) {
callbacks = jQuery.Callbacks();
message = {
publish: callbacks.fire,
subscribe: callbacks.add,
unsubscribe: callbacks.remove
};
if ( id ) {
messages[ id ] = message;
}
}
return message;
};
那么在windows事件之间的任何地方都可以使用以下模式发布和订阅。一个窗口可以发布数据:
global.Message("someButtonClicked").publish(data);
然后另一个可以监听。
global.Message("someButtonClicked").subscribe(onButtonClicked);
function onButtonClicked(data) {
console.log(data);
};
你可以使用windows .eval():
https://github.com/rogerwang/node-webkit/wiki/Window windowevalframe-script
相关文章:
- 如何防止网页加载后自动启动功能
- 使用具有同步和启动功能的弹性滑块时出现问题
- 如何再次启动功能
- 悬停几秒钟后启动功能
- 当滚动到指定的位置时,启动功能,如何重置它并重新启动,如果我们再次回到这个位置
- 仅在加载活动类图像时启动功能 - Twitter 引导轮播
- 一段时间后启动功能
- 如果(随机)单词不存在,则完全重复/重新启动功能
- 花式树激活节点启动功能
- 等待用户点击而不是页面加载来启动功能
- Chrome扩展,仅在当前页面加载完成后才启动功能
- 定时功能和用户启动功能之间的冲突
- onClick获胜't启动功能
- 检查是否设置了cookie以及是否真的启动功能
- Meteor JS-加载每个模板后启动功能
- v型转换后如何启动功能
- Node-Webkit在不同窗口中的启动功能
- 只在点击按钮时启动功能?(javascript)
- setTimeout立即启动功能,而不是等待
- Jquery滑块自动启动功能