gpt4 book ai didi

node.js - 在nw.js(node-webkit)中,node-main : node. js如何访问任何窗口?

转载 作者:太空宇宙 更新时间:2023-11-04 02:22:24 25 4
gpt4 key购买 nike

如果package.json中的窗口A打开一个新窗口B,node-main如何访问它?这是我的代码:

package.json

 {
"main": "index.html",
"name": "Hello NW.js",
"node-main": "nodemain.js",
"window": {
"toolbar": true
}
}

index.html

  <body>
<script src="test.js">
</script>
</body>
</html>

测试.js

var gui = require('nw.gui'); 
var win = gui.Window.get();
var testval = "window1"
var test = function()
{
alert(testval);
};
gui.Window.open ('index2.html', {});

index2.html

<html>
<body>
<script src="test2.js">
</script>
</body>
</html>

test2.js

var gui = require('nw.gui'); 
var win = gui.Window.get();

var testval = "window2";
var test = function()
{
alert(testval);
};

这是nodemain.js

setTimeout(function() {
var gui = window.require('nw.gui');
gui.Window.get().test();
}, 1000);

当我启动时,有一个警报窗口显示:window1。如何让调用index2.html中包含的test2.js中的函数,使警报窗口显示:window2?

最佳答案

nodemain.js 访问窗口对象的更好方法是,您应该在窗口加载时将窗口对象的引用保存在 nodemain.js 中。这是因为 node-main 脚本首先启动,然后窗口打开。

因此,在 test.js 中,您可以调用 Node 进程并使用 process.mainModule 将窗口引用保存在 Node 上下文中。 exports

在你的nodemain.js

var windowMap = {};  //map that will store window references

// exporting this function to access it from process.mainmodule.exports
exports.saveWindow = function(name, winObj){
windowMap[name] = winObj;
};

setTimeout(function() {
windowMap['win1'].test();
windowMap['win2'].test();
}, 1000);

在您的 test.js 中,您将保存 Window通过从 Node 调用 saveWindow 方法来引用 Node 上下文。此外,您还将在 Window 对象中保存测试函数的引用。

在 test.js 中

var gui = require('nw.gui');
var win = gui.Window.get();

var testval = "window1";
win.test = function()
{
alert(testval);
};

var win2 = gui.Window.open ('index2.html', {});

// calling saveWindow from node context
process.mainModule.exports.saveWindow('win1', win);
process.mainModule.exports.saveWindow('win2', win2);

在 test2.js 中

var gui = require('nw.gui');
var win = gui.Window.get();

var testval = "window2";
win.test = function()
{
alert(testval);
};

当nodemain.js setTimeout 调用时,它将拥有 Window 对象,并将成功调用绑定(bind)到 Window 对象的测试方法。

关于node.js - 在nw.js(node-webkit)中,node-main : node. js如何访问任何窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32551937/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com