【问题标题】:A button when clicking on it loads a javascript file单击按钮时会加载一个javascript文件
【发布时间】:2020-11-05 12:04:44
【问题描述】:

通过单击按钮,我需要它来执行.js 文件。
我试着这样做:

const otimizations = require("../assets/scripts/optimizations.js");
const { is } = require("electron-util");
const Store = require("electron-store");
const { shell } = require("electron");
const config = new Store();
const { app, BrowserWindow } = require("electron").remote;

function openHelp() {
  shell.openExternal('https://nichpc.com.br/')
}

document.querySelector("#start").addEventListener("click", e => {

    document.querySelector("#start").classList.add("hidden");
    document.querySelector("#loading").classList.remove("hidden");

    if (is.development) {
      setTimeout(() => {
        document.querySelector("#loading").classList.add("hidden");
        document.getElementById('status').innerText = 'Pronto! Agora faça alguns procedimentos manuais.';
        document.querySelector("#more-steps").classList.remove("hidden");
      }, 5000)
    } else {
      otimizations
        .start()
        .then(() => {
          document.querySelector("#loading").classList.add("hidden");
          document.getElementById('status').innerText = 'Vamos fazer alguns procedimentos manuais.';
          document.querySelector("#more-steps").classList.remove("hidden");
        })
        .catch(err => {
          document.querySelector("#start").classList.remove("hidden");
          document.querySelector("#loading").classList.add("hidden");
          console.log(err);
        });

    }
  },
  false
);

但它不起作用 我在 电子框架 中使用它。 显然我错过了什么,但我不知道它是什么。

【问题讨论】:

  • 这个问题只是关于javascript的,不是吗?
  • 确保在您的窗口的 html 中引用了此脚本。此外,请确保此事件处理程序不在电子启动器/主 js 文件(即初始化应用程序的 BrowserWindow 等的文件)中,因为该文件仅用于在后端运行。
  • @AnisR。我已经检查了所有内容,它不在主 js 文件中。
  • 这是您尝试执行的文件还是您计划执行的部分?因为我没有看到这样的东西。按钮调用了哪个函数?您是否尝试执行该新 URL 中的文件?

标签: javascript html electron


【解决方案1】:

确保在您创建 BrowserWindow 对象的 main.js 文件中将 webPreferences.nodeIntegration 设置为 true。您需要它,因为您在 js 文件中使用了 nodejs require 。像这样的:

const mainWindow = new BrowserWindow({
    webPreferences: {
      nodeIntegration: true
    } 
  })

【讨论】:

  • 我已经将 webPreferences.node 集成设置为 true。是不是代码里没有东西?
  • 该设置是必需的,因为您的 js 文件中有 'require' 语句。您还需要确保“#start”元素位于加载 .js 文件的脚本标记之前的 HTML 中。如果这两个都是正确的,那么通过添加 console.log 语句来检查当你点击按钮时你的事件处理程序是否被触发
猜你喜欢
  • 1970-01-01
  • 2021-07-08
  • 2011-04-10
  • 1970-01-01
  • 2018-02-14
  • 2023-03-10
  • 1970-01-01
  • 1970-01-01
  • 2020-09-24
相关资源
最近更新 更多