Electron子窗口不想调用自己的js脚本

时间:2019-02-08 18:07:07

标签: javascript node.js electron

我不是一个JavaScript的人,但是我一直在制作Electron GUI,为什么我似乎无法让子浏览器窗口调用自己的js令我感到困惑。

我有一个main.js,它可以完成很多事情,设置一个托盘菜单,其中一个选项将产生一个如下所示的浏览器窗口:

  window = new BrowserWindow({
    width: 360,
    height: 320,
    backgroundColor: "#D6D8DC",
    show: false
  })

  window.setMenuBarVisibility(false);

  window.loadURL(require('url').format({
    pathname: path.join(__dirname, 'index.html'),
    protocol: 'file:',
    slashes: true
  }))

该窗口可以很好地加载,并包含对它自己的window.js的引用,这是我在Electron示例中看到的方式:

<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
  <title>Radiam Agent</title>
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
  <script src="https://code.jquery.com/jquery-3.2.1.js"></script>
</head>

<body>
  <div id="container" class="container-fluid">

    <div class="row">
      <div class="col-xs-12 col-sm-12 col-md-12 col-lg-12 ">
        <h3>Username</h3>
        <input name="username" id="username" type="text" size="40"/>
      </div>
    </div>

    <div class="row">
      <div class="col-xs-12 col-sm-12 col-md-12 col-lg-12 ">
        <h3>Password</h3>
        <input name="password" id="password" type="password" size="40"/>
      </div>
    </div>

    <br/><br/>

    <div class="button">
      <button id="login">Get Radiam Login Token</button>
    </div>

  </div>
  <script src="window.js" charset="utf-8"></script>
</body>

</html>

但是看起来像{整个文件)的window.js代码似乎从未触发过:

const notifier = require("node-notifier");
const zerorpc = require("zerorpc");
let client = new zerorpc.Client();
client.connect("tcp://127.0.0.1:4242");

function login(event) {
  var username = document.getElementById("username").value;
  var password = document.getElementById("password").value;
  client.invoke("login", username, password, function(error, res, more) {
    if (res){
      notifier.notify({"title" : "Radiam", "message" : res});
    }
  });
}

document.addEventListener('DOMContentLoaded', function() {
  document.getElementById("login").addEventListener("click", login(event));
})

我想念什么吗?再说一次,不是一个js的人(我正在为Python脚本构建GUI,否则可以很好地工作),但是似乎应该很明显...

谢谢!

1 个答案:

答案 0 :(得分:0)

这有效。我认为这是错误的侦听器类型,而且我不应该尝试通过event

const notifier = require("node-notifier");
const zerorpc = require("zerorpc");
let client = new zerorpc.Client();
client.connect("tcp://127.0.0.1:4242");

function login() {
  var username = document.getElementById("username").value;
  var password = document.getElementById("password").value;
  client.invoke("login", username, password, function(error, res, more) {
    if (res){
      notifier.notify({"title" : "Radiam", "message" : res});
    }
  });
}

document.getElementById("login").addEventListener("click", login);