first commit
This commit is contained in:
22
day02-create-menu-dynamically/index.html
Normal file
22
day02-create-menu-dynamically/index.html
Normal file
@@ -0,0 +1,22 @@
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>自定义菜单</title>
|
||||
<style>
|
||||
* {
|
||||
margin: 0.75rem 0.25rem;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h2>自定义菜单</h2>
|
||||
<button id="addMenu">创建自定义菜单</button>
|
||||
<br>
|
||||
<input type="text" placeholder="输入自定义菜单项内容" id="menuCon">
|
||||
<br>
|
||||
<button id="addItem">添加菜单项</button>
|
||||
|
||||
<script src="index.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
40
day02-create-menu-dynamically/index.js
Normal file
40
day02-create-menu-dynamically/index.js
Normal file
@@ -0,0 +1,40 @@
|
||||
const { remote } = require('electron')
|
||||
const Menu = remote.Menu
|
||||
const MenuItem = remote.MenuItem
|
||||
|
||||
window.addEventListener('DOMContentLoaded', () => {
|
||||
// 获取相应的元素
|
||||
let addMenu = document.getElementById('addMenu')
|
||||
let menuCon = document.getElementById('menuCon')
|
||||
let addItem = document.getElementById('addItem')
|
||||
|
||||
// 自定义全局变量存放菜单项
|
||||
let menuItem = new Menu()
|
||||
|
||||
// 生成自定义的菜单
|
||||
addMenu.addEventListener('click', () => {
|
||||
// 创建菜单
|
||||
let menuFile = new MenuItem({ label: '文件', type: 'normal' })
|
||||
let menuEdit = new MenuItem({ label: '编辑', type: 'normal' })
|
||||
let customMenu = new MenuItem({ label: '自定义菜单项', submenu: menuItem })
|
||||
|
||||
// 将创建好的自定义菜单添加至 menu
|
||||
let menu = new Menu()
|
||||
menu.append(menuFile)
|
||||
menu.append(menuEdit)
|
||||
menu.append(customMenu)
|
||||
|
||||
// 将 menu 添加至 app 中显示
|
||||
Menu.setApplicationMenu(menu)
|
||||
})
|
||||
|
||||
// 动态添加菜单项
|
||||
addItem.addEventListener('click', () => {
|
||||
// 获取当前 input 输入框中的元素
|
||||
let con = menuCon.value.trim()
|
||||
if (con) {
|
||||
menuItem.append(new MenuItem({ label: con, type: 'normal' }))
|
||||
menuCon.value = ''
|
||||
}
|
||||
})
|
||||
})
|
||||
29
day02-create-menu-dynamically/main.js
Normal file
29
day02-create-menu-dynamically/main.js
Normal file
@@ -0,0 +1,29 @@
|
||||
const { app, BrowserWindow } = require('electron')
|
||||
|
||||
const createWindow = () => {
|
||||
let mainWin = new BrowserWindow({
|
||||
show: false,
|
||||
width: 800,
|
||||
height: 600,
|
||||
webPreferences: {
|
||||
nodeIntegration: true,
|
||||
enableRemoteModule: true
|
||||
}
|
||||
})
|
||||
|
||||
mainWin.loadFile('index.html')
|
||||
|
||||
mainWin.on('ready-to-show', () => {
|
||||
mainWin.show()
|
||||
})
|
||||
|
||||
mainWin.on('close', () => {
|
||||
mainWin = null
|
||||
})
|
||||
}
|
||||
|
||||
app.on('ready', createWindow)
|
||||
|
||||
app.on('window-all-closed', () => {
|
||||
app.quit()
|
||||
})
|
||||
1396
day02-create-menu-dynamically/package-lock.json
generated
Normal file
1396
day02-create-menu-dynamically/package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
17
day02-create-menu-dynamically/package.json
Normal file
17
day02-create-menu-dynamically/package.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"name": "electron-life-cycle",
|
||||
"version": "1.0.0",
|
||||
"description": "",
|
||||
"main": "main.js",
|
||||
"scripts": {
|
||||
"start": "nodemon --watch main.js --exec npm run build",
|
||||
"build": "electron ."
|
||||
},
|
||||
"keywords": [],
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"devDependencies": {
|
||||
"electron": "^11.2.1",
|
||||
"nodemon": "^3.1.9"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user