Jetpack扩展案例:Gmail邮件提醒功能

2016-02-20 01:04 9 1 收藏

关注图老师设计创意栏目可以让大家能更好的了解电脑,知道有关于电脑的更多有趣教程,今天给大家分享Jetpack扩展案例:Gmail邮件提醒功能教程,希望对大家能有一点小小的帮助。

【 tulaoshi.com - Web开发 】

Firefox 的 Jetpack 扩展案例分析:Gmail 邮件提醒

Gtalk 软件的最下方有个很好又很实用的功能,就是 Gmail 邮件提醒功能。会定时更新你 Gmail 中未读新邮件的数量。

试想如果我们将此功能移植到 Firefox 上一定有趣!

第一步,在状态栏中显示图标和数据

通过 《如何创建 Firefox 的 Jetpack 扩展》 这篇文章,我们可以轻易的创建:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

jetpack.statusBar.append({
    html: 'img src="http://mail.google.com/mail/images/favicon.ico"/span id="count"/span', //Gmail邮件图标和未读新邮件数
    width: 55, //状态栏上的宽度为55
    onReady: function(widget) {
        $("#count", widget).css({ //给未读新邮件数添加样式
            cursor: "pointer",
            paddingLeft:"4px",
            fontFamily: "Tahoma, Arial, sans-serif",
            verticalAlign: "top",
            fontSize: "10px",
            lineHeight:"18px",
        });
    }
});

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

第二步,获取 Gmail 的数据,更新未读新邮件数

可以通过 Gmail 邮件的 Feed 获得(需登录):https://mail.google.com/mail/feed/atom

Feed 源码中的 fullcount 标签是用来记录当前的未读新邮件数。

OK,首先数据源有了。接着,我们使用再熟悉不过的 Ajax 技术,获取到数据并赋给指定的元素。

function update(widget) {
    var widget = $(widget);
    $.get("https://mail.google.com/mail/feed/atom", function(xml) {
        var el = $(xml).find("fullcount"); // 记录未读新邮件数的节点
        if(el){
            var newcount = parseInt(el.get(0).textContent);
            widget.find("#count").text(newcount); //赋给指定的元素
        } else { //如果未登录,显示Login
            widget.find("#count").text( "Login" );
        }
    });
}

我们还可以通过进行一些优化:比如当未读新邮件数大于原来的邮件数时,增加提示信息等。
提示信息这里使用 jetpack.notifications.show(options) 方法,options 参数有三个属性:title (String):通知的标题;icon (URL):通知 icon 的 URL;body (String):通知的主题内容。

优化后的代码如下:

function update(widget) {
    var widget = $(widget),
        notify = function(msg) { // 定义通知的公用方法
            jetpack.notifications.show({
                title: "Gmail",
                body: msg,
                icon: "http://mail.google.com/mail/images/favicon.ico"
            });
        };
    $.get("https://mail.google.com/mail/feed/atom", function(xml) {
        var el = $(xml).find("fullcount"); // 记录未读新邮件数的节点
        if(el){
            var newcount = parseInt(el.get(0).textContent);
            if(newcount count) { // 如果未读新邮件数大于原来的邮件数,则提示来自哪里
                var sender = $(xml).find("name").get(0).textContent;
                notify("New message from "+sender);
            }
            count = newcount;
            widget.find("#count").text(count); //赋给指定的元素
        } else { //如果未登录,提示登录
            widget.find("#count").text( "Login" );
            notify("Please login to Gmail");
        }
    });
}

第三步:设置定时更新数据

我们设置每 1 分钟更新一次数据:

setInterval( function() { update(widget) }, 60*1000 );

第四步:设置点击扩展后的链接窗口

$(widget).click(function() { //设置点击扩展后的链接窗口
    jetpack.tabs.open("http://mail.google.com");
    jetpack.tabs[ jetpack.tabs.length-1 ].focus();
});

jetpack.tabs 为浏览器窗口的标签对象,.open(url) 为新打开浏览器窗口标签的方法,.focus()为选中此标签为当前标签的方法。

OK,Firefox 的 Jetpack 扩展Gmail 邮件提醒,经过简单的四步轻松完成。

全部代码如下:

var count = 0;
function update(widget) {
    var widget = $(widget),
        notify = function(msg) { // 定义通知的公用方法
            jetpack.notifications.show({
                title: "Gmail",
                body: msg,
                icon: "http://mail.google.com/mail/images/favicon.ico"
            });
        };
    $.get("https://mail.google.com/mail/feed/atom", function(xml) {
        var el = $(xml).find("fullcount"); // 记录未读新邮件数的节点
        if(el){
            var newcount = parseInt(el.get(0).textContent);
            if(newcount count) { // 如果未读新邮件数大于原来的邮件数,则提示来自哪里
                var sender = $(xml).find("name").get(0).textContent;
                notify("New message from "+sender);
            }
            count = newcount;
            widget.find("#count").text(count); //赋给指定的元素
        } else { //如果未登录,提示登录
            widget.find("#count").text( "Login" );
            notify("Please login to Gmail");
        }
    });
}
jetpack.statusBar.append({
    html: 'img src="http://mail.google.com/mail/images/favicon.ico"/span id="count"/span', //Gmail邮件图标和未读新邮件数
    width: 40, //状态栏上的宽度为40,预留3位数的宽度
    onReady: function(widget) {
        $("#count", widget).css({ //给未读新邮件数添加样式
            cursor: "pointer",
            paddingLeft:"4px",
            fontFamily: "Tahoma, Arial, sans-serif",
            verticalAlign: "top",
            fontSize: "10px",
            lineHeight:"18px",
        });        $(widget).click(function() { //设置点击扩展后的链接窗口
            jetpack.tabs.open("http://mail.google.com");
            jetpack.tabs[ jetpack.tabs.length-1 ].focus();
        }); 
       update(widget);
        setInterval( function() {update(widget) }, 60*1000 );   
}
});

测试Demo:http://www.planabc.net/lab/jetpack/gmail/

对于 Jetpack 详细的 API,可以阅读 about:jetpack 页面的 API Reference 标签部分。

案例源码来自:https://jetpack.mozillalabs.com/demos/gmail-checker.js

来源:http://www.tulaoshi.com/n/20160220/1633176.html

延伸阅读
标签: Web开发
一直好忙,没有时间写属于自己的东西,但是看着一天天不更新心情也不是个滋味,只有从网上收罗一些比较好的东东贴上。 /*** 删除首尾空格 ***/ String.prototype.Trim = function() {   return this.replace(/(^\s*)|(\s*$)/g, ""); } /*** 统计指定字符出现的次数 ***/ String....
对于美,仁者见仁智者见智,但在邮件设计中,订阅者才是最终评委。为了能够吸引订阅者在打开后继续点击、产生后续转化,我们通常会设计明显的call to action,其实尝试跳出传统产品链接的模式,比如通过投票、选择等方式也达到间接转化的目的邮件。下面我们一起来分享以下这些案例,看看在同样的设计思路下,会有怎样不同的表现。 1.投票 J. ...
虾米音乐邮件提醒如何设置   如果你一段时间没有登录虾米,我们会通过 Email 提醒与你有关的事件。你可以选择只接受某些类别的提醒:新的站内信、新通知、新的请求。
标签: Web开发
PS前端架构辅助v2.0.1版2007-11-14发布,欢迎各位前端架构师下载试用,欢迎反馈使用建议。 推出目的,可以快速生成HTML代码和CSS样式--选中一个选区,按下F2,代码立即生成图片也立即保存好了 相信Photoshop是凡是称得上电脑高手的人都会的图片处理软件,鸽子也特别喜欢画画(设计),这个软件也用得特溜,闭着眼都可以玩了。呵,于是也...
iPhone设置电子邮件定时提醒   第一步,在设置应用页面,点击邮件、通讯录、日历。 TuLaoShi.com 第二步,在邮件、通讯录、日历选项页面,点击获取新数据选项。 第三步,在获取新数据页面,点击开启推送功能,还可以设置每15分钟、30分钟或一个小时让iPhone检查一次新邮件。 iPhone的诞生创造了移动电源 ...

经验教程

834

收藏

14
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部