zoukankan      html  css  js  c++  java
  • (HTML5)HTML5 Web Notification桌面通知实践

    这几天偶然翻到了张鑫旭的文章简单了解HTML5中的Web Notification桌面通知。一看到这个应用就有点兴奋,因为这不同于日常的前端开发,是一种很新颖的功能(早就了解的老司机请无视)。边读我就边照着代码跑了一遍,效果不错。在这个功能的启发之下,我打算做个小功能,类似todo任务的桌面提醒,详细内容待我慢慢道来

    具体功能点就是,通过页面设置桌面提醒的时间和提醒内容,然后到了目标时间就会以桌面提醒的方式给用用户提示。样式就像下图这样

    提醒

    具体实现

    HTML5 Web Notification的具体用法大家可以看张鑫旭的博客,介绍的详细,还有实例!具体本文例子的实现如下:

    1. 设置当前的可选小时,分钟,秒钟等,然后生成checkbox,供用户选择。这部分比较简单,通过 js 的 Date 对象的一系列 get 方法,即可获得当前小时等信息,然后生成其他的小时,分钟等时间即可。这里以生成小时为例:

       function getAllHour( hour, hours ) {
         if ( hour < 24 ) {
           hours.push( hour );
           arguments.callee( ++hour, hours );
      
         }
         return hours;
       }
       function initNotiHour() {
         var hourContainer = document.getElementById( 'select-hour' );
         var currentHour = new Date().getHours();
         var hours = [];
         var allHours = getAllHour( currentHour, hours );
      
         allHours.forEach( function( item, index ) {
           hourContainer.innerHTML += '<option>' + item + '</option>';
         } );
       }
      
    2. 我们生成了可供用户选择的时间之后,用户就可以自己设置自己想要的时间了。然后我们也可以通过 checkbox 的 value 属性获取用户的设置。那么问题来了,如何我们如何判断到了用户的设置时间呢?
      其实 Date 对象的 set 系列的方法就是用来做这个事情的,我可以设置一个未来而时间,然后不停的用当前时间和它作比较,如果二者相等,就表明时间到了。
      具体看代码:

       function setTargetTime() {
         var date = new Date();
      
         date.setHours( getUserTime( 'select-hour' ) );
         date.setMinutes( getUserTime( 'select-minute' ) );
         date.setSeconds( getUserTime( 'select-second' ) );
      
         return date;
       }
      
    3. 我们现在得到了用户设置的目标时间,我们只需要不断地获取当前时间,这个不难,对了,如何比较两个时间相等来着 ? 我感觉这个问题就怕想复杂,其实用 Date 的 getTime() 方法或者两个时间的具体毫秒数比较就可以了!!!

    4. 然后接下来就可以复用张鑫旭的代码,来处理具体桌面提醒部分的功能了!

    总结,这个下来比较简单就实现了一个简易的桌面提醒小功能!具体 demo 大家想看的可以去 HTML5 Web Notification 桌面提醒加强版。如果觉得还不错,可以帮我点个赞哦~多谢了!

    乱花渐欲迷人眼,浅草才能没马蹄
  • 相关阅读:
    python基础:内置函数zip,map,filter
    python基础:网络编程
    python基础:异常捕捉
    jQuery demo
    day14 jQuery
    day13 JS Dom
    页面垂直方向出现两个滚动条问题?
    修复npm ERR! cb()never called!的错误;This is an error with npm itself. Please report this error at:
    vue——解决“You may use special comments to disable some warnings. Use // eslint-disable-next-line to ignore the next line. Use /* eslint-disable */ to ignore all warnings in a file. ” eslint报错,取消文件的rules
    原型链
  • 原文地址:https://www.cnblogs.com/StrongerSY/p/6090071.html
Copyright © 2011-2022 走看看