基于Electron的Windows桌面闹钟小程序

您所在的位置:网站首页 电子闹钟的介绍 基于Electron的Windows桌面闹钟小程序

基于Electron的Windows桌面闹钟小程序

2024-07-09 18:36:44| 来源: 网络整理| 查看: 265

前言 相关环境

Node.js: v12.13.0 Electron:17.0.1 开发工具:VS Code 相关技术:HTML、JS、CSS 打包:electron-packager 官方文档:https://www.electronjs.org/zh/docs/latest/tutorial/quick-start Electron 安装可参考:Electron桌面应用:环境搭建

工程下载

码云 GitHub

功能说明

设定提醒时间 和 提醒的内容(图片、视频、音乐),1s一轮训,当到达设定时间后,弹窗提醒内容(自动播放)。可以选择现在就去完成想做的事,或者等5分钟之后再去。 ps:v1.0.0 默认的提示内容位于data文件夹下

工程概览

在这里插入图片描述

效果图

在这里插入图片描述

核心代码 index.html Electron Clock 简体中文 日本語 EN 设定喝水时间: 选择提示内容: 选择文件 index.js // 定时器1 var timer1; // 数据json串 var data_json; // 初始化默认时间 function init_time(dateString) { let alarm_time = document.getElementById("alarm_time"); alarm_time.value = dateString; } // 文件选中 function file_selected(node) { try { var file = null; if(node.files && node.files[0] ){ file = node.files[0]; } else if(node.files && node.files.item(0)) { file = node.files.item(0); } // Firefox 因安全性问题已无法直接通过input[file].value 获取完整的文件路径 try { //Firefox7.0 data_json["file_path"] = file.getAsDataURL(); //alert("//Firefox7.0"+data_json["file_path"]); } catch(e) { //Firefox8.0以上 data_json["file_path"] = window.URL.createObjectURL(file); //alert("//Firefox8.0以上"+data_json["file_path"]); } } catch(e) { // 如果是遨游的话会报这个异常 // 支持html5的浏览器,比如高版本的firefox、chrome、ie10 if (node.files && node.files[0]) { var reader = new FileReader(); reader.onload = function (e) { data_json["file_path"] = e.target.result; }; reader.readAsDataURL(node.files[0]); } } data_json["file_name"] = file.name; data_json["file_type"] = file.type; data_json["file_path"] = file.path; console.log(file); // console.log("data_json["file_path"]:" + data_json["file_path"] + "\ndata_json["file_type"]:" + file.type); // 文件名显示 document.getElementById("file_name").innerHTML = file.name; write_data_to_local(); } // 检查是否到达闹钟时间 function check_time() { let alarm_time = document.getElementById("alarm_time"); let date = new Date(); // let yyyy = date.getFullYear(); // let MM = (date.getMonth() + 1) < 10 ? ("0" + (date.getMonth() + 1)) : (date.getMonth() + 1); // let dd = date.getDate() < 10 ? ("0" + date.getDate()) : date.getDate(); let HH = date.getHours() width: 400, height: 400, transparent:true, webPreferences: { webSecurity: false } }; var child_page = window.open('child.html', '弹窗', child_page_config); setTimeout(() => { child_page.postMessage({"file_path":data_json["file_path"], "file_type":data_json["file_type"]}, '*'); }, 1000); } else { // alert("alarm_time:" + alarm_time.value + " dateString:" + dateString); } } // 开始闹钟 function start_clock() { //alert("开启闹钟"); timer1 = setInterval(function() { check_time(); }, 1000); } // 停止闹钟 function stop_clock() { //alert("停止闹钟"); clearInterval(timer1); } window.addEventListener('DOMContentLoaded', () => { // 加载本地数据 load_local_data(); document.getElementById("language").onchange = function() { language_change(); } document.getElementById("start_btn").onclick = function() { start_clock(); } document.getElementById("stop_btn").onclick = function() { stop_clock(); } document.getElementById("alarm_content").onchange = function() { file_selected(this); } }) // 接收子窗口消息 window.addEventListener("message", (msg) => { console.log("接收到的消息:", msg); // 子窗口发来的延时命令 if(msg.data.type == 1) { let date = new Date(); // let yyyy = date.getFullYear(); // let MM = (date.getMonth() + 1) < 10 ? ("0" + (date.getMonth() + 1)) : (date.getMonth() + 1); // let dd = date.getDate() < 10 ? ("0" + date.getDate()) : date.getDate(); let HH = date.getHours() = 60) { hour = (parseInt(HH) + 1) >= 24 ? (parseInt(HH) + 1) - 24 : (parseInt(HH) + 1); } else { hour = HH; } var dateString = (hour console.log("收到子窗口异常消息"); } }) // 设置select选择 function set_select_checked(selectId, checkValue) { var select = document.getElementById(selectId); for (var i = 0; i select.options[i].selected = true; break; } } } // 加载本地数据 function load_local_data() { const fs = require("fs"); fs.readFile('data/config.json', (err, data) => { if (err) return console.error(err); console.log(data.toString()); data_json = JSON.parse(data.toString()); // 修改语言 set_select_checked("language", data_json["cur_language"]); language_change_no_save(data_json["cur_language"]); // 初始化时间 init_time(data_json["clock_time"]); // 文件名显示 document.getElementById("file_name").innerHTML = data_json["file_name"]; }); } // 写入数据到本地文件 function write_data_to_local() { const fs = require('fs') //写入路径是文件名 fs.writeFile('data/config.json', JSON.stringify(data_json), (err) => { if (err) return console.error(err); console.log('写入数据成功'); }) } // 语言切换 function language_change() { var obj = document.getElementById("language"); // 选中索引 var index = obj.selectedIndex; // 选中值 var language_val = obj.options[index].value; data_json["cur_language"] = language_val; console.log("language_val:" + language_val); write_data_to_local(); language_change_no_save(language_val); } // 语言切换 不含数据保存 function language_change_no_save(language_val) { var alarm_time_span = document.getElementById("alarm_time_span"); var alarm_content_span = document.getElementById("alarm_content_span"); var alarm_content_a = document.getElementById("alarm_content_a"); var start_btn = document.getElementById("start_btn"); var stop_btn = document.getElementById("stop_btn"); var alarm_time = document.getElementById("alarm_time"); if(language_val == "ch") { alarm_time_span.innerText = "设定闹钟时间:"; alarm_content_span.innerText = "选择提示内容:"; alarm_content_a.innerHTML = "选择文件"; start_btn.value = "开启闹钟"; stop_btn.value = "关闭闹钟"; alarm_time.style.width = "160px"; } else if(language_val == "en") { alarm_time_span.innerText = "Clock Time:"; alarm_content_span.innerText = "Choose Tip:"; alarm_content_a.innerHTML = "Choose File"; start_btn.value = "Start Clock"; stop_btn.value = "Stop Clock"; alarm_time.style.width = "185px"; } else if(language_val == "jp") { alarm_time_span.innerText = "プロンプト時間:"; alarm_content_span.innerText = "選択のヒント:"; alarm_content_a.innerHTML = "ファイルの選択"; start_btn.value = "オン時計"; stop_btn.value = "閉じる時計"; alarm_time.style.width = "140px"; } else { alarm_time_span.innerText = "Clock Time:"; alarm_content_span.innerText = "Choose Tip:"; alarm_content_a.innerHTML = "Choose File"; start_btn.value = "Start Clock"; stop_btn.value = "Stop Clock"; alarm_time.style.width = "185px"; } document.getElementById("alarm_content").onchange = function() { file_selected(this); } } child.js window.addEventListener("message", (msg) => { console.log("接收到的消息:", msg); // alert("接收到的消息:" + msg.data.file_type + " " + msg.data.file_path); var data_div = document.getElementById("data_div"); if(msg.data.file_type.indexOf("image/") != -1) { let img = document.createElement('img'); img.src = msg.data.file_path; img.style.height = "400px"; data_div.appendChild(img); } else if(msg.data.file_type.indexOf("audio/") != -1) { let audio = document.createElement('audio'); audio.controls = true; audio.loop = true; audio.src = msg.data.file_path; audio.style.height = "400px"; data_div.appendChild(audio); audio.play(); } else if(msg.data.file_type.indexOf("video/") != -1) { let video = document.createElement('video'); video.controls = true; video.loop = true; video.src = msg.data.file_path; video.style.height = "400px"; data_div.appendChild(video); video.play(); } else { console.log("收到的文件格式异常!file_type:" + file_type); } }) // 现在就去做 function now_do() { window.opener.postMessage({ type: 0, wait_min: 0 }); window.close(); } // 等待duration分钟后在做 function wait_min(duration) { window.opener.postMessage({ type: 1, wait_min: duration }); window.close(); } window.addEventListener('DOMContentLoaded', () => { document.getElementById("now_btn").onclick = function() { now_do(); } document.getElementById("wait_btn").onclick = function() { wait_min(5); } })


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭