javascript - nwjs - 在二进制文件上调用函数
问题描述
// source.js
function foo(){
alert("its work!");
}
// main.js
nw.Window.open("index.html", {}, function (win) {});
setTimeout(() => {
let win = nw.Window.get();
win.evalNWBin(null, "binary.bin");
foo();
}, 2000);
我运行以下命令来生成二进制文件:
nwjc source.js binary.bin
当我运行上面的代码时,它显示了这个错误:
Uncaught ReferenceError: foo is not defined
如何从 main js 调用 binary.bin 上的函数?
解决方案
因为你是"main": "index.js"
在你的 中做的package.json
,所以代码将在 Node 上下文中运行,而alert
不是一个函数。
如果你这样做,"main": "index.html"
那么有
<script>
nw.Window.get().evalNWBin(null, 'binary.bin');
foo();
</script>
它会正常工作。
您可以Right-Click > Inspect Background Page
查看控制台日志错误的节点进程开发工具。
或者,您可以在全局window
对象上公开您的函数。
window.foo = function () {
alert('It works');
};
您可以通过将代码放入回调函数中来等待应用程序窗口加载。
nw.Window.open('index.html', {}, function (win) {
win.evalNWBin(null, 'binary.bin');
win.window.foo();
});
然后你不需要“获取”窗口,你已经有了它。您可以访问其全局window
对象以访问存储在其上的内容。