在电子js中按钮单击事件绑定

Man*_*ota 14 node.js electron

我已经开始使用电子js来开发桌面应用程序.

我想知道如何用javascript函数绑定按钮点击事件,以便我可以执行其他操作.

我使用下面的HTML代码:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>Manav Finance</title>
  </head>
  <body>
    <input type="button" onclick="getData()" value="Get Data" />
  </body>

  <script>
    // You can also require other files to run in this process
    require('./renderer.js')
  </script>
</html>
Run Code Online (Sandbox Code Playgroud)

我的renderer.js代码如下所示:

function getData(){
        console.log('Called!!!');
    }
Run Code Online (Sandbox Code Playgroud)

但我得到的错误是:

未捕获的ReferenceError:未在HTMLInputElement.onclick中定义getData

难道我做错了什么?

更新

更新了HTML文档并删除了require()方法及其现在的工作:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>Manav Finance</title>
    <script src="renderer.js"></script>
  </head>
  <body>
    <input type="button" id="btnEd" value="Get Data" onclick="getData()" />
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

Mar*_*und 19

为将来的用户解释这个. <script>HTML文档中的标记在全局范围内执行,这意味着this === window,即脚本中声明的任何函数或变量本身都变为全局.

当你require编写一个脚本时,它会在它自己的上下文中被隔离(它被包装在另一个函数中,所以this !== window,即脚本中声明的任何函数或变量在全局都不可用.

正确的方法是使用require('./renderer.js')和使用此代码

function getData() {
    ...
}

document.querySelector('#btnEd').addEventListener('click', () => {
    getData()
})
Run Code Online (Sandbox Code Playgroud)

  • 在本例中,应该在哪里添加“require”语句? (3认同)
  • 你如何在电子中使用事件参数? (2认同)