让 QQ 邮箱更好用,支持桌面通知
前言
腾讯家的 QQ 邮箱和企业邮箱很好用,之前一直是用着网页版,最多加上个手机 APP 收个推送,反正也不是着急的事儿。
急了
最近因为工作的原因,对收邮件的实时性有了更高的要求。
一开始,我试用了几款邮箱客户端,发现所谓实时性,就是调整通过 POP3 拉取邮件的频率而已,然而那远程拉取的效率,实在不敢恭维,而且还要在本地做存储,浪费大量磁盘空间,实在不是很爽利。
我只是想要一个通知而已
其实我的需求很简单,我只想在邮箱里收到邮件时,在电脑桌面给自己一个通知即可,而 QQ 邮箱的网页版其实已经通过一个长连接实现了实时监控邮件到账的功能。
网页版桌面通知
于是,我只要能找到这里长连接的代码,在收到新邮件时,调用一个桌面通知,事情岂不就完美解决了?!
于是,我找到了这么一段代码
(function() {var e = a, f = getTop();f.loadJsFile(f.getPath("js") + f.getFullResSuffix("qmwebpush.js"), true, f.document, function() {QMWebpush.getInst().addEvent((1 << e._nTOTALSERVICES - 1) * 2 - 1, function(g, h) {e._addData(g, h)._reloadWin(g)._updateTip()._setDocTitle();}).open(e._mnOpenServices);e._mbInit = true;});})();
复制代码
简单的说,这段代码是用来在收到新邮件后,在网页内右下角弹框提醒的功能,那么我在这儿加一段桌面通知岂不完美?!
赞,就是这么干。
来一段猴子脚本
在猴子脚本里,可以通过unsafeWindow
来访问到页面窗口对象,在上文代码里,挑一个代码来 hook 一下:
var oldUpdateTip = unsafeWindow.QMWebpushTip._addData;unsafeWindow.QMWebpushTip._addData = function(g,h){console.log('_addData',g,h);setTimeout(function(){if (h && h[0] && h[0]['subject'] && h[0]['summary'] ){notifyMail(h[0]['subject'] , h[0]['summary']);}},2000);return oldUpdateTip(g,h);}
复制代码
这里的参数中,h 变量就是个数组,里面放着的就是新邮件的数据,于是取出邮件标题和描述,弹桌面通知即可:
function notifyMail(title,body){var tag = "sds"+Math.random();Notification.requestPermission(function (perm) {if (perm == "granted") {var notify = new Notification(title.replace(/ /g,''), {tag: tag,// icon: "https://exmail.qq.com/favicon.ico",body: body.replace(/ /g,'')});notify.onclick=function(){//如果通知消息被点击,通知窗口将被激活,且点击收件箱。console.log("桌面消息点击了!!!");if (document.getElementById('folder_1')){document.getElementById('folder_1').click();}else if (parent.document.getElementById('folder_1')){parent.document.getElementById('folder_1').click();}window.focus();notify.close();};notify.onerror = function () {console.log("桌面消息出错!!!");};notify.onshow = function () {console.log("桌面消息成功");// setTimeout(function(){// notify.close();// },2000)};notify.onclose = function () {console.log("桌面消息关闭!!!");};}})}
复制代码
这里用到了Notification
,具体用法网上一大堆,就不废话了。
后语
所以啊,自己动手丰衣足食,程序员,是不是挺有意思的。
注:此文只分享一些工作生活中的小思考,并不提供完整的脚本下载,敬请理解。
让 QQ 邮箱更好用,支持桌面通知相关推荐
- android email分析,QQ邮箱Android客户端产品体验报告
QQ邮箱Android客户端产品体验报告 概览 手机:魅族MX3 操作系统:Flyme OS 3.5.2(A19220) 体验产品:QQ邮箱Android客户端 软件版本:4.0 需求分析 目标人群: ...
- 诺基亚 索爱 低端手机及智能手机 与 QQ邮箱或MyTT 通讯录同步 介绍
常常由于更换手机,或者更换SIM卡,或者手机丢失等等原因,需要管理和维护自己的大量的联系人通讯录数据,这时若是可以将联系人保存到网上,第一呢可以很好的保存联系人数据,第二呢,可以快捷方便的修改和查询联 ...
- ipad查看qq邮箱收件服务器,QQ邮箱Apple终端的邮箱管理解疑 | 我爱上QQ
下面向大家介绍如何使用Mac上的邮件应用程序Mail创建QQ邮箱帐户 ,这里以iMac为例: 1.在邮箱中启用IMAP服务. 2.在Mail中新建QQ邮箱账户的第三步(创建过程见这里),点击" ...
- 发送邮件到qq邮箱、126邮箱后丢失样式
发送邮件到qq邮箱.126邮箱丢失样式 使用java发送html到qq邮箱后,发现采用"外部样式表"的css都没有 外部样式表: <link rel="styles ...
- qq邮箱如何在win10邮箱连接到服务器,win10自带邮箱如何使用?win10自带邮箱如何同步qq邮箱邮件?...
win10自带邮箱如何使用? 相信很多小伙伴在登录win10自带的邮箱登录QQ邮箱时,显示同步失败或者登录超时,但又找不到相关的资料,下面是我自己邮箱的操作流程,小伙伴可以尝试一下,有什么问题留言即可 ...
- QQ邮箱可以绑定自己的域名拉
今天早上起来收到了QQ邮箱的一个邮件 ,标题为:邀请您试用新产品:腾讯域名邮箱. 呵呵 ,个人认为QQ邮箱是腾讯最好的一个产品,在不收费的前提下. 下面是邮件内容: ================= ...
- JavaScript 兼容新旧版chrome和firefox的桌面通知
1.新/旧版本的chrome和firefox都可支持,IE下不支持因此设置为了在最小化窗口处闪烁显示提示文字. 2.设置为提示窗口显示5秒即关闭. 3.可设置图标和点击提示窗口要跳转到的页面(见输入参 ...
- 浏览器桌面通知(notifications)
近期在做公司后台管理系统,当有任务到来时,须要通知当事人,可是 当事人有可能在做别的,浏览器有可能会被最小化,这样就非常难看到通知了.经过查找发现有些浏览器能够使用noitfications.能够在桌 ...
- HTML5 桌面通知 new Notification
1.背景: 房产咨询,用户和房博士聊天,当发送聊天消息时,需要做收到消息通知,最后查到HTML5新增的 Notification API的通知功能.即使将浏览器窗口最小化,依然会收到消息通知. 2. ...
最新文章
- Admin注册和路由分发详解
- 大型网站架构的发展演变过程
- 京东价格情报员 比价是假 砸场子是真
- 运动会加油稿计算机学院,信息工程学院运动会加油稿
- P4123-[CQOI2016]不同的最小割【网络流,分治】
- C++——必须使用复制构造函数的情况
- 【Flink】Flink 写入 Clickhouse 大对象直接进入老年代 导致OOM
- 在java中使用solrj对solr进行CRUD
- 浏览器了解(五)资源加载顺序
- PDMS Pipeline Tool 教程(六):选项设置
- 移动前端开发和web前端开发的区别?
- 学会宽容您的世界会很美丽
- Linux编辑grldr文件,使用syslinux完美引导GRLDR。
- buu [MRCTF2020]天干地支+甲子 1
- m2e-wtp的作用
- 网络信息手机:web scrapper数据获取 、数据采集器、公众号信息收集
- 浦东计算机学校排名2015,浦东重点初中排名:四大名校、八大金刚。。(2015新编)...
- 标题:未来五年的中国
- 添加pdf打印机后给PDF添加背景
- 一篇文章了解保险的全方面——IT工程师该怎么保护自己
热门文章
- 用turtle画只小熊猫
- 做软件开发,客户难找?接单难?怎么办?
- BAT之变:瘦死的骆驼比马大
- 2023.02.11草图大师浴室效果图1skp素材效果图
- 性能监控工具-JDK性能监控
- 华为Mate X2发售首日秒没,黄牛报价4.5万,有中介安排12个人抢购
- html 文档在线查看,在网页中在线查看文档(doc、docx 、xls 、xlsx、 pdf 、swf )
- 快速设置Revit模型材质(Dynamo和API)
- docker 网络方案--分析
- UE4 Random Unit Vector In Cone