久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

使用HTML5 Notication API實現一個定時提醒工具

在本文中將利用封裝過的API實現一個定時提醒工具。 工具的主要目的是:自己經常坐在電腦前,一坐就是好幾個小時,希望有工具能夠每小時提醒自己起來活動休息一會。 主要功能有:
       在本文中將利用封裝過的API實現一個定時提醒工具。

       工具的主要目的是:自己經常坐在電腦前,一坐就是好幾個小時,希望有工具能夠每小時提醒自己起來活動休息一會。

       主要功能有:用戶可以設置周期性的提醒時間,比如設置每1小時提醒一次,1小時后將彈出通知框提醒用戶時間到。

       其他包括:用戶能夠設置對話框的持續時間,比如持續15秒,15秒后對話框消失,以及提醒內容等。


      HTML&CSS

      首先先創建基本的HTML結構如下:

  1. <!DOCTYPE html>
  2. <html>
  3.         <head>
  4.                 <meta charset="utf-8" />
  5.                 <title>時間提醒</title>
  6.                 <style>
  7.                         div {
  8.                                 margin:40px 15px;
  9.                         }
  10.                        
  11.                         #main {                               
  12.                                 margin:0 auto;
  13.                                 width:360px;
  14.                                 border: 2px solid green;
  15.                         }
  16.                        
  17.                         .operation {
  18.                                 text-align:center;
  19.                         }
  20.                        
  21.                 </style>
  22.         </head>
  23.         <body>
  24.                 <div id="main">
  25.                 <div><label for="interval">設置時間間隔(分):<input id="interval" type="number" value="60" /></label></div>
  26.                 <div><label for="duration">彈窗持續時間(分):<input id="duration" type="number"  value="1" /></label></div>
  27.                 <div><label for="content">設置提醒消息:<textarea id="content" >你已經做了很久啦,讓眼睛放松放松吧~~!</textarea></label></div>
  28.                 <div class="operation">
  29.                         <input type="button" value="開始" id="start" />
  30.                         <input type="button" value="停止" id="stop" />
  31.                 </div>
  32.                 </div>
  33.                 <script src="desktopNotify.js"></script>
  34.                 <script src="desktop-notification.js"></script>
  35.         </body>
  36. </html>
復制代碼

      desktopNotify.js是前面提到的封裝過的Notification API, desktop-notification.js則是相關的業務邏輯JS,后面會說到。基本的效果如下,雖然是丑陋了點- -!!

0000.png


      程序的邏輯比較簡單,設置各個字段,點擊"開始"按鈕,程序開始計時,到指定時間,彈出通知框。

      JavaScrip


      desktopNotify.js的功能主要是對原生Notification API做一些基本封裝,代碼如下:

  1. //desktopNotify.js
  2. void function() {
  3.         var _instance = null,
  4.                 _permissionStatus = -1,
  5.                 _eventTable = {
  6.                         "show": 1,
  7.                         "error": 1,
  8.                         "close": 1,
  9.                         "click": 1
  10.                 };
  11.        
  12.        
  13.         /**
  14.          *調用例子:
  15.          * var DN = window.XX.DesktopNotify;
  16.          * DN.requestPermission(function(){
  17.          *           DN.show("http://xxx", "hello", "world");
  18.          * });
  19.          */       
  20.         var DesktopNotify = {
  21.                
  22.                 /**
  23.                  *檢測是否支持Notification,支持返回true
  24.                  */
  25.                 isSupport : function() {
  26.                         return 'Notification' in window || 'webkitNotifications' in window;
  27.                 },

  28.                 /**
  29.                  *彈出一個文本桌面通知
  30.                  *
  31.                  * @param {String} iconURL:圖標資源
  32.                  * @param {String} title: 標題
  33.                  * @param {String} content: 內容
  34.                  */
  35.                 show : function(iconURL, title, content) {
  36.                         _instance = this.create(iconURL, title, content);
  37.                         _instance.show();
  38.                 },

  39.                
  40.                 /**
  41.                  *彈出一個 HTML桌面通知
  42.                  *
  43.                  * @param {String} url:html鏈接資源
  44.                  */
  45.                 showHTML : function(url) {
  46.                         _instance = this.createHTML(url);
  47.                         _instance.show();
  48.                 },

  49.                 /***
  50.                  * 關閉一個桌面通知
  51.                  *
  52.                  * @param {Object} cb: 隱藏后的回調函數
  53.                  *
  54.                  */
  55.                 hide : function(cb) {
  56.                         _instance && _instance.close();
  57.                         cb && cb();
  58.                 },
  59.                
  60.                 /**
  61.                  * 釋放通知對話框引用
  62.                  */
  63.                 destroy: function() {
  64.                         _instance = null,
  65.                         _permissionStatus = -1;
  66.                 },

  67.                 /**
  68.                  * 檢查權限狀態
  69.                  * @return {Number}: 0為允許,1為不允許, 2為禁止
  70.                  */
  71.                 checkPermission : function() {
  72.                         return _permissionStatus = webkitNotifications.checkPermission();
  73.                 },
  74.                
  75.                 /**
  76.                  * 檢查是否得到授權
  77.                  * @return {Boolean}: true表示得到授權
  78.                  */
  79.                 isPermitted: function() {
  80.                         return this.checkPermission() === 0;
  81.                 },
  82.                
  83.                
  84.                 /**
  85.                  * 請求授權
  86.                  * @param {Object} cb:得到授權后的回調函數
  87.                  */
  88.                 requestPermission: function(cb) {
  89.                         if(this.isPermitted()) {
  90.                                 cb && cb();
  91.                         } else {
  92.                                 webkitNotifications.requestPermission(cb);
  93.                         }
  94.                 },
  95.                
  96.                 /**
  97.                  * 創建一個文本性質的通知對話框,但不展示
  98.                  * @param {Object} iconURL
  99.                  * @param {Object} title
  100.                  * @param {Object} content
  101.                  * @return {Object} Notification實例
  102.                  */
  103.                 create: function(iconURL, title, content) {
  104.                         return webkitNotifications.createNotification(iconURL, title, content);
  105.                 },
  106.                
  107.                 /**
  108.                  * 創建一個HTML性質的通知對話框,但不展示
  109.                  * @param {Object} url: 指向html頁面的鏈接
  110.                  * @return {Object} Notification實例
  111.                  */
  112.                 createHTML: function(url) {
  113.                         return webkitNotifications.createHTMLNotification(url);
  114.                 },
  115.                
  116.                 /**
  117.                  * 添加事件監聽函數
  118.                  * @param {Object} type: 事件類型
  119.                  * @param {Object} fn: 監聽函數
  120.                  */
  121.                 on: function(type, fn) {
  122.                         _eventTable[type] && _instance && _instance.addEventListener(type, fn, false);
  123.                 },
  124.                
  125.                 /**
  126.                  * 移除事件監聽函數
  127.                  * @param {Object} type: 事件類型
  128.                  * @param {Object} fn: 監聽函數
  129.                  */
  130.                 un: function(type, fn) {
  131.                                 _eventTable[type] && _instance && _instance.removeEventListener(type, fn, false);
  132.                 }
  133.         };

  134.         window.XX || (window.XX = {});
  135.         window.XX.DesktopNotify = DesktopNotify;
  136. }();
復制代碼

      desktop-notification.js則是業務代碼,如下:

  1. //desktop-notification.js
  2. void function() {
  3.     var TITLE = '時間到啦~~!親!!',
  4.             //圖標路徑
  5.         ICONURL = 'icon.png';

  6.     var DN = window.XX.DesktopNotify;

  7.    /**
  8.     * 通知函數,根據設置的時間間隔,周期的彈出通知框
  9.     */
  10.     function notify(content, duration) {
  11.         DN.show(ICONURL, TITLE, content);
  12.         setTimeout(function() {
  13.             DN.hide();
  14.         }, duration);
  15.     }

  16.     if (!DN.isSupport()) {
  17.         alert('瀏覽器不支持桌面通知!');
  18.         return;
  19.     }

  20.     var startEl = document.getElementById('start'),//開始按鈕
  21.         stopEl = document.getElementById('stop'),//停止按鈕
  22.         intervalEl = document.getElementById('interval'),//提醒時間間隔輸入框
  23.         contentEl = document.getElementById('content'),//提醒內容輸入框
  24.         durEl = document.getElementById('duration'),//通知框持續時間輸入框
  25.         timer = null;

  26.     startEl.addEventListener('click', function(evt) {
  27.         /**
  28.          * 點擊“開始”,先申請用戶授權,經過授權后,獲取相關的提醒時間間隔,以及內容,周期的調用notify函數彈出通知框
  29.          */
  30.         DN.requestPermission(function() {
  31.             timer = setInterval(notify, intervalEl.value * 60 * 1000, contentEl.value, durEl.value * 60 * 1000);
  32.             startEl.disabled = true;
  33.         });
  34.     }, false);

  35.     stopEl.addEventListener('click', function(evt) {
  36.         /**
  37.          * 點擊“停止”,清除周期調用
  38.          */
  39.         clearInterval(timer);
  40.         startEl.disabled = false;
  41.     }, false);
  42. }();
復制代碼

      運行效果

      注意,網頁必須在HTTP或HTTPS協議下打開,而不能直接用File協議打開,否則無法運行(若用戶設置了瀏覽器接收任何通知,倒是可以直接打開運行)。運行的效果如下:

000.png


      即便當瀏覽器最小化,或者未在高亮狀態,通知框一樣會定時彈出。

      總結

      在本文中,利用了HTML5 Notification做了一個簡單的小工具,用于提醒自己不要久坐,按時休息= =!雖然界面是丑陋了點,不過效果還可以。


完整代碼點擊:https://github.com/Exodia/jsdemo/tree/master/desktop-notifications


【網站聲明】本站除付費源碼經過測試外,其他素材未做測試,不保證完整性,網站上部分源碼僅限學習交流,請勿用于商業用途。如損害你的權益請聯系客服QQ:2655101040 給予處理,謝謝支持。

相關文檔推薦

由于實際運行環境是在瀏覽器中,因此性能還取決于JavaScript解釋器的效率,指定的FPS幀速在低性能解釋器中可能不會達到,所以這部分不是開發者能夠決定的,開發者能作的是盡可能通
本文將使用HTML5提供的VideoAPI做一個自定義的視頻播放器,需要用到HTML5提供的video標簽、以及HTML5提供的對JavascriptAPI的擴展。,HTML5中國,中國最大的HTML5中文門戶。
隨著 Hybrid 應用的豐富,HTML5 工程師們已經不滿足于把桌面端體驗簡單移植到移動端,他們覬覦移動原生應用人性化的操作體驗,特別是原生應用與生俱來的豐富的手勢系統。HTML5 沒有提
你想要在自己網站上分享一個產品,或者是一個作品集,又或者僅僅只是一個靈感。在你發布到網上之前,你想讓它看起來有吸引力,專業,或者至少得看起來像那么回事。那么你接下
下面小編就為大家帶來一篇使用Html5實現異步上傳文件,支持跨域,帶有上傳進度條。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
本篇文章主要介紹了使用HTML5 Canvas創建動態粒子網格動畫,非常具有實用價值,需要的朋友可以參考下。
主站蜘蛛池模板: 亚洲综合字幕 | 日韩在线小视频 | 久久99久久| 久久高清精品 | 一区二区在线 | 成人伊人 | 天堂综合 | 国产精品99久久久久久久vr | 91av在线影院 | 国产精品日韩欧美一区二区三区 | 一级毛片视频在线观看 | 91精品中文字幕一区二区三区 | 成人在线观 | 日韩国产精品一区二区三区 | 精品久久国产 | 欧美色性 | 奇米av| 国产激情在线 | 日韩精品一区在线 | 中文字幕国产视频 | 国产精品99久久久久久久vr | 一区二区免费看 | 国产午夜精品一区二区三区在线观看 | 欧美一区二区视频 | 精品免费国产一区二区三区四区 | 国产精品久久久久久久午夜 | 国产精品久久久久久久久久久免费看 | 麻豆精品一区二区三区在线观看 | 国产亚洲精品精品国产亚洲综合 | 激情五月综合 | 91精品一区二区三区久久久久久 | 亚洲视频中文字幕 | 国产综合久久 | 日本精品视频在线观看 | 人人九九精 | 三级成人在线 | www.久久| 国产区高清| 日韩精品久久久久 | 久久久久一区二区三区四区 | 超碰520 |