Node-Webkit在不同的窗口启动function

我的node-webkit应用程序由一个控制窗口和一个演示窗口组成。

控制窗口收集数据,并最终通过window.open函数启动演示窗口。

演示窗口现在可以访问globalvariables中的一些信息。

现在我想通过创buildSVG元素等来呈现该信息的graphics表示。

我已经有一个JavaScript函数来做到这一点,但我需要从控制窗口启动该function的一些方法。

我不能直接调用它,因为函数必须访问其他窗口的DOM。

我已经尝试在另一个窗口的对象上使用eval函数,但是使用消息崩溃了node-webkit

 [18719:0522/205047:ERROR:breakpad_linux.cc(1225)] crash dump file written to /tmp/chromium-renderer-minidump-788bf8d0c68301d5.dmp 

什么是最好的方法来做到这一点?

使用setInterval定期检查一个全局variables?

我发现一个非常有效的解决scheme是将pub / subfunction附加到globalvariables。 到目前为止我使用的设置是基于jQuery的,但是也可以不用构build。 首先使用此代码的变体进行初始化:

  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; }; 

然后,窗口事件之间的任何地方都可以发布和订阅使用以下模式。 一个窗口可以发布数据:

 global.Message("someButtonClicked").publish(data); 

然后另一个可以听。

 global.Message("someButtonClicked").subscribe(onButtonClicked); function onButtonClicked(data) { console.log(data); }; 

您可以通过使用Window.eval()注入和评估一块JS:

https://github.com/rogerwang/node-webkit/wiki/Window#windowevalframe-script