{
"name": "block zhihu",
"version": "0.1",
"description": "Notify dingding every 5 minuntes for browsing zhihu",
"permissions": [
"tabs",
"storage",
"alarms",
"idle",
"https://oapi.dingtalk.com/"
],
"background": {
"scripts": ["jquery-3.2.1.min.js","bg.js"]
},
"manifest_version": 2
}"manifest_version": 2 这个也不用改,是 chrome 的 manifest 文件格式版本。permissions:chrome 插件要调用 chrome 的接口,就需要在这里声明权限,tabs、alarms、idle 都是 chrome API。storage 是 localStorage 存储。下面那个钉钉地址是跨域请求权限。background:这个列表里面的脚本会在后台运行。要知道后台运行的脚本和网页本身的脚本并不在一个进程里,所以直接打开网页审查是看不到这个后台脚本的,如果要调试插件程序的话,要去 extension - inspect views 里面找。如果需要跟网页脚本本身做交互的话,需要增加 content_scripts 项。alert 在 chrome 上面弹窗。track_sites:这里其实可以增加更多的域名,比如 youtube.com 、weibo.com之类的,毕竟能刷的又不止知乎。GMT:时间按东八区的时间来算,主要是为了在每天零点清空数据用的。MINUTE_PER_DAY:每天有 1440 分钟,不解释。TIMEPACE:每刷几分钟就给出提醒,这里是每 5 分钟就提醒一次。NOTIFY_URL、MOBILE_NUMBER:发送钉钉机器人的链接,为什么要用钉钉机器人: http://www.jianshu.com/p/418e4ffbb4e3 track_sites这个是小写,其他都是大写?因为(忘记改了,划掉)这个以后做个接口在前台手动增加域名的话,会是个变量。initLocalStorage():清空本地存储,然后增加一些变量,比如 is_idle 电脑是不是在休眠,last_site 上一个访问的站点,total_elapsed_time 总共浪费了多少时间,next_alarm_time 刷到这个时间点就提醒,然后就是以每个域名为 key 的每个域名访问了多少时间的表,虽然逻辑上并不需要用这个字典,但将来可以扩展成特定的网站每天或者每周给予特定的访问时长。timeNow():获取当前时间戳。checkCurrentTab(),获取当前活跃的 tab 的域名,然后去 updateDomin() 去确认这个域名是不是在黑名单里面,然后再去 addTimeDelta()「更新浏览时间」,注:代码中 addTimeDelta() 会在下文实现。checkCurrentTab() 函数绑到这三个事件上。idle.onStateChanged 从电脑休眠中苏醒和恢复时,记录一下 idle 状态,同时如果是从休眠到 active 的状态,等同于 windows focus Changed 事件。isElapsedTime() 根据上一次事件时正在访问的站点域名,来判断上一段时间是不是在刷知乎。updateLocalStorageTime() 更新一下 localStorage 的各站点访问时间。
WX20170823-151825.png