4

我现在正在寻找几个小时,关于如何使用 node-webkit 将变量传递给新打开的窗口。

该任务非常简单(如 HTTP POST),但在 nwj(node-webkit)文档中没有关于此的消息。

我用来打开新窗口的代码:

var win = gui.Window.open ('print.html', {
  position: 'center',
  width: 901,
  height: 127
});
win.on ('loaded', function(){
  // the native onload event has just occurred
  var document = win.window.document;
});

谢谢!

4

2 回答 2

3

您可以使用“emit”函数将数据传递到新窗口。然后你需要做的就是拦截这个事件,你可以从你传入的对象中提取参数。

例如,在您的 index.html 中:

<html>
 <head>
  <script type="text/javascript">
  window.gui = require('nw.gui');
  var win = gui.Window.open ('print.html', {
  position: 'center',
  width: 901,
  height: 127
  });

  win.on ('loaded', function(){
    var parameters = {greeting: "Hello World"}
    win.emit("data", parameters);
  });
   </script>
 </head>
 <body>
 </body>
</html>

然后在你的 print.html 中:

<html>
 <head>
  <script type="text/javascript">
    var gui = require('nw.gui');
    var win = gui.Window.get();
    win.on("data", function(data) {
        document.write(data.greeting);
    });  
  </script>
 </head>
 <body>
 </body>
</html>
于 2015-11-24T14:50:21.040 回答
0

根据当前的 nwjs 文档,更新后的代码将如下所示:

索引.html

...<script>let RVal
nw.Window.open('print.html', {},win=>win.on('loaded', () =>RVal=win.window.prnFunc(someData)))</script>...

打印.html

...<script>function prnFunc(theData){alert(theData); return 4*theData/*or some such*/}</script>...
于 2020-03-07T19:00:17.707 回答