javascript - 对主要js和从html加载的js脚本之间的状态访问

标签 javascript html node.js electron

我正在使用html canvas构建绘画应用程序。另外,我正在使用菜单按钮来更改 Activity 颜色,形状并切换填充选项。因此,我所有的逻辑都存在于canvas.js中导入的index.html文件中,我在该文件中管理 Canvas ,但是我当前的设置位于index.js中。但是我找不到在index.js和此脚本文件之间进行交流的方法。现在,每次我开始绘图时,我都会向主文件发送IPC请求并获取当前设置,但这还不够快。理想情况下,当我开始绘制内容时,我需要在canvas.js文件中已经准备好当前设置。最好的方法是什么?

index.js:

const { app, BrowserWindow, Menu, ipcMain } = require('electron');

let win;

let color = '#ffff00';
let shape = 'PointShape';
let fill = true;

...
  win.loadFile('index.html');
...

ipcMain.on('getSettings', (event) => {
  event.reply('letSettings', color, shape, fill);
});

index.html:
<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>Electron Paint App</title>
    <link rel="stylesheet" href="./style.css" />
  </head>
  <body>
    <canvas id="canvas"></canvas>
    <script src="canvas.js"></script>
  </body>
</html>

cansav.js:
window.addEventListener('load', () => {
    require('events').defaultMaxListeners = 9999;
    const { ipcRenderer } = require('electron');

...

function startPosition(e) {
        ipcRenderer.send('getSettings');
        ipcRenderer.on('letSettings', (event, color, shape, fill) => {
            curColor = color;
            curShape = shape;
            curFill = fill;
        });

...

window.global.canvas.addEventListener("mousedown", startPosition);

最佳答案

在文档中,他们说:"The Menu class is only available in the main process, but you can also use it in the render process via the remote module."
我只使用ContextMenu,但是它应该起作用。
在渲染器代码中,我这样做:

const {
  BrowserWindow,
  dialog,
  Menu,
  MenuItem
} = require('electron').remote;

并定义我的菜单
const menuCloneVin = new Menu();
  menuCloneVin.append(new MenuItem({
    label: 'My Item Label',
    click() {
     // code to execute when click
    }
  }));

关于javascript - 对主要js和从html加载的js脚本之间的状态访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62393649/

相关文章:

javascript - 如何构造函数以返回 Promise

html - Bootstrap 导航栏对于页面来说太大了

java - Node.js 或 Netty 上的游戏服务器

node.js - 你如何修改 generator-angular-fullstack 图标?

javascript - Node js中分割字符串并取出特定元素

javascript - 将数字更改为数组中的百分比

javascript - 在javascript中突出显示文本按钮

javascript - Web 元素在 Visual Studio 实时服务器中无法正常运行

javascript - 当 HTML5 文件 API(具体为 FileList)不可用时,如何获取文件的值?

html - 背景颜色不覆盖 div 的全高