使用HTML5 Notication API实现一个定时提醒工具
工具的主要目的是:自己经常坐在电脑前,一坐就是好几个小时,希望有工具能够每小时提醒自己起来活动休息一会。
主要功能有:用户可以设置周期性的提醒时间,比如设置每1小时提醒一次,1小时后将弹出通知框提醒用户时间到。
其他包括:用户能够设置对话框的持续时间,比如持续15秒,15秒后对话框消失,以及提醒内容等。
HTML&CSS
首先先创建基本的HTML结构如下:
-
-
-
时间提醒
- div {
- margin:40px 15px;
- }
-
- #main {
- margin:0 auto;
- width:360px;
- border: 2px solid green;
- }
-
- .operation {
- text-align:center;
- }
-
-
-
-
-
-
-
-
desktopNotify.js是前面提到的封装过的Notification API, desktop-notification.js则是相关的业务逻辑JS,后面会说到。基本的效果如下,虽然是丑陋了点- -!!
程序的逻辑比较简单,设置各个字段,点击"开始"按钮,程序开始计时,到指定时间,弹出通知框。
JavaScrip
desktopNotify.js的功能主要是对原生Notification API做一些基本封装,代码如下:
- //desktopNotify.js
- void function() {
- var _instance = null,
- _permissionStatus = -1,
- _eventTable = {
- "show": 1,
- "error": 1,
- "close": 1,
- "click": 1
- };
-
-
- /**
- *调用例子:
- * var DN = window.XX.DesktopNotify;
- * DN.requestPermission(function(){
- * DN.show("http://xxx", "hello", "world");
- * });
- */
- var DesktopNotify = {
-
- /**
- *检测是否支持Notification,支持返回true
- */
- isSupport : function() {
- return 'Notification' in window || 'webkitNotifications' in window;
- },
- /**
- *弹出一个文本桌面通知
- *
- * @param {String} iconURL:图标资源
- * @param {String} title: 标题
- * @param {String} content: 内容
- */
- show : function(iconURL, title, content) {
- _instance = this.create(iconURL, title, content);
- _instance.show();
- },
-
- /**
- *弹出一个 HTML桌面通知
- *
- * @param {String} url:html链接资源
- */
- showHTML : function(url) {
- _instance = this.createHTML(url);
- _instance.show();
- },
- /***
- * 关闭一个桌面通知
- *
- * @param {Object} cb: 隐藏后的回调函数
- *
- */
- hide : function(cb) {
- _instance && _instance.close();
- cb && cb();
- },
-
- /**
- * 释放通知对话框引用
- */
- destroy: function() {
- _instance = null,
- _permissionStatus = -1;
- },
- /**
- * 检查权限状态
- * @return {Number}: 0为允许,1为不允许, 2为禁止
- */
- checkPermission : function() {
- return _permissionStatus = webkitNotifications.checkPermission();
- },
-
- /**
- * 检查是否得到授权
- * @return {Boolean}: true表示得到授权
- */
- isPermitted: function() {
- return this.checkPermission() === 0;
- },
-
-
- /**
- * 请求授权
- * @param {Object} cb:得到授权后的回调函数
- */
- requestPermission: function(cb) {
- if(this.isPermitted()) {
- cb && cb();
- } else {
- webkitNotifications.requestPermission(cb);
- }
- },
-
- /**
- * 创建一个文本性质的通知对话框,但不展示
- * @param {Object} iconURL
- * @param {Object} title
- * @param {Object} content
- * @return {Object} Notification实例
- */
- create: function(iconURL, title, content) {
- return webkitNotifications.createNotification(iconURL, title, content);
- },
-
- /**
- * 创建一个HTML性质的通知对话框,但不展示
- * @param {Object} url: 指向html页面的链接
- * @return {Object} Notification实例
- */
- createHTML: function(url) {
- return webkitNotifications.createHTMLNotification(url);
- },
-
- /**
- * 添加事件监听函数
- * @param {Object} type: 事件类型
- * @param {Object} fn: 监听函数
- */
- on: function(type, fn) {
- _eventTable[type] && _instance && _instance.addEventListener(type, fn, false);
- },
-
- /**
- * 移除事件监听函数
- * @param {Object} type: 事件类型
- * @param {Object} fn: 监听函数
- */
- un: function(type, fn) {
- _eventTable[type] && _instance && _instance.removeEventListener(type, fn, false);
- }
- };
- window.XX || (window.XX = {});
- window.XX.DesktopNotify = DesktopNotify;
- }();
desktop-notification.js则是业务代码,如下:
- //desktop-notification.js
- void function() {
- var TITLE = '时间到啦~~!亲!!',
- //图标路径
- ICONURL = 'icon.png';
- var DN = window.XX.DesktopNotify;
- /**
- * 通知函数,根据设置的时间间隔,周期的弹出通知框
- */
- function notify(content, duration) {
- DN.show(ICONURL, TITLE, content);
- setTimeout(function() {
- DN.hide();
- }, duration);
- }
- if (!DN.isSupport()) {
- alert('浏览器不支持桌面通知!');
- return;
- }
- var startEl = document.getElementById('start'),//开始按钮
- stopEl = document.getElementById('stop'),//停止按钮
- intervalEl = document.getElementById('interval'),//提醒时间间隔输入框
- contentEl = document.getElementById('content'),//提醒内容输入框
- durEl = document.getElementById('duration'),//通知框持续时间输入框
- timer = null;
- startEl.addEventListener('click', function(evt) {
- /**
- * 点击“开始”,先申请用户授权,经过授权后,获取相关的提醒时间间隔,以及内容,周期的调用notify函数弹出通知框
- */
- DN.requestPermission(function() {
- timer = setInterval(notify, intervalEl.value * 60 * 1000, contentEl.value, durEl.value * 60 * 1000);
- startEl.disabled = true;
- });
- }, false);
- stopEl.addEventListener('click', function(evt) {
- /**
- * 点击“停止”,清除周期调用
- */
- clearInterval(timer);
- startEl.disabled = false;
- }, false);
- }();
运行效果
注意,网页必须在HTTP或HTTPS协议下打开,而不能直接用File协议打开,否则无法运行(若用户设置了浏览器接收任何通知,倒是可以直接打开运行)。运行的效果如下:
即便当浏览器最小化,或者未在高亮状态,通知框一样会定时弹出。
总结
在本文中,利用了HTML5 Notification做了一个简单的小工具,用于提醒自己不要久坐,按时休息= =!虽然界面是丑陋了点,不过效果还可以。
完整代码点击:https://github.com/Exodia/jsdemo/tree/master/desktop-notifications

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

H5referstoHTML5,apivotaltechnologyinwebdevelopment.1)HTML5introducesnewelementsandAPIsforrich,dynamicwebapplications.2)Itsupportsmultimediawithoutplugins,enhancinguserexperienceacrossdevices.3)SemanticelementsimprovecontentstructureandSEO.4)H5'srespo

Web标准和技术从HTML4、CSS2和简单的JavaScript演变至今,经历了显著的发展。1)HTML5引入了Canvas、WebStorage等API,增强了Web应用的复杂性和互动性。2)CSS3增加了动画和过渡功能,使页面效果更加丰富。3)JavaScript通过Node.js和ES6的现代化语法,如箭头函数和类,提升了开发效率和代码可读性,这些变化推动了Web应用的性能优化和最佳实践的发展。

H5代碼的最佳實踐包括:1.使用正確的DOCTYPE聲明和字符編碼;2.採用語義化標籤;3.減少HTTP請求;4.使用異步加載;5.優化圖像。這些實踐能提升網頁的效率、可維護性和用戶體驗。

H5開發需要掌握的工具和框架包括Vue.js、React和Webpack。 1.Vue.js適用於構建用戶界面,支持組件化開發。 2.React通過虛擬DOM優化頁面渲染,適合複雜應用。 3.Webpack用於模塊打包,優化資源加載。

H5不僅僅是HTML5的簡稱,它代表了一個更廣泛的現代網頁開發技術生態:1.H5包括HTML5、CSS3、JavaScript及相關API和技術;2.它提供更豐富、互動、流暢的用戶體驗,能在多設備上無縫運行;3.使用H5技術棧可以創建響應式網頁和復雜交互功能。

H5與HTML5指的是同一個東西,即HTML5。 HTML5是HTML的第五個版本,帶來了語義化標籤、多媒體支持、畫布與圖形、離線存儲與本地存儲等新功能,提升了網頁的表現力和交互性。

HTML5hassignificantlytransformedwebdevelopmentbyintroducingsemanticelements,enhancingmultimediasupport,andimprovingperformance.1)ItmadewebsitesmoreaccessibleandSEO-friendlywithsemanticelementslike,,and.2)HTML5introducednativeandtags,eliminatingthenee

HTML5是構建現代網頁的關鍵技術,提供了許多新元素和功能。 1.HTML5引入了語義化元素如、、等,增強了網頁結構和SEO。 2.支持多媒體元素和,無需插件即可嵌入媒體。 3.表單增強了新輸入類型和驗證屬性,簡化了驗證過程。 4.提供了離線和本地存儲功能,提升了網頁性能和用戶體驗。
