在电子程序中单击按钮以运行功能时,页面内容被清除并且功能不运行

时间:2018-08-23 03:34:53

标签: javascript node.js electron

我有一个非常奇怪的错误。当我单击按钮以运行功能open()时,该功能未运行(console.log未记录任何内容)。但是,在开发人员工具中,当我进入控制台并运行open()时,它似乎运行得很好。

open()用于打开文件打开对话框。

这里是按钮:

<button class="w3-button" id="openButton" onclick="open();">Open</button>

open()中的scripts.js(由HTML文件引用):

//open file
function open() {
  ipcRenderer.send('openFile', {});
  console.log("wtf?");
  //judging by absence of above statement on button click, this is probably a HTML problem...?
}

这是应该在main.js中打开对话框的功能:

ipcMain.on('openFile', function () {
  //show open dialog
  dialog.showOpenDialog({
    defaultPath: '~/',
    filters: [
      {name: 'Text Files', extensions: ['txt']},
      {name: 'All Files', extensions: ['*']}
    ]
  }, function() {
    console.log("wtf?");
    //open the file
    fs.readFile();
  });
});

1 个答案:

答案 0 :(得分:0)

首先,问题是openreserved name

要解决您的问题,您要么

  1. 重命名功能,一切按原样或
  2. 添加open作为按钮的属性
document.getElementById('openButton').open = () => {
  ipcRenderer.send('openFile', {})
}

并在回调中调用它

<button class="w3-button" id="openButton" onclick="this.open()">Open</button>
  1. 不要使用名称作为监听器
document.getElementById('openButton').addEventListener('click', () => {
  ipcRenderer.send('openFile', {})
}

很抱歉,我们无法重新制作整个答案。将open添加到document是一个丑陋的解决方法