Электронное дочернее окно не хочет вызывать свой собственный js-скрипт - PullRequest
0 голосов
/ 08 февраля 2019

Я очень не Java-пользователь, но я делаю графический интерфейс Electron, и меня смущает, почему я не могу заставить дочернее окно браузера вызывать свой собственный 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 человек (я создаю GUI для скрипта Python, который в остальном работает отлично), но кажется, что это должно быть очевидно ...

Спасибо!

1 Ответ

0 голосов
/ 14 февраля 2019

Это сработало.Я думаю, что это был неправильный тип слушателя, плюс я не должен был пытаться передать 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...