如何开发Gmail的Chrome扩展程序?
我正在考虑为Gmail开发Chrome扩展程序,我想知道目前的最佳做法。
例如:
- 将GPG签名默认附加到每封电子邮件
- 添加一个额外的button,做一些事情(我已经)
- 劫持发送电子邮件的行为,并促使我做一些事情
- …
- (只是他们的例子帮助我发现什么是可能的)
有相当多的显着扩展,大大增强了Gmail的function:
- http://www.boomeranggmail.com/
- http://toolbox.mxhero.com/
- http://www.wisestamp.com/
- …
- (我不隶属于他们中的任何一个,我只是命名了几个)
其中一个select是查看位于这里的源文件~/Library/Application Support/Google/Chrome/Default
但也许有(如意算盘)一个很好的教程/一套实践如何捣鼓的Gmail的用户界面和function?
Gmail扩展/小工具API – 如何将button添加到撰写工具栏?
您将不得不以编程方式创build并注入button。 这将涉及到很多的Gmail源代码(扰stream:这是丑陋的)。
如何build立一个Chrome扩展添加面板到Gmail窗口?
您将面临的最大的长期挑战是gmail的布局将意外改变,并中断电子邮件发现或修改的用户界面。 这两个问题要么需要一些聪明才能解决,要么你会熬夜想知道Google是否会突然打破你的扩展。
http://www.jamesyu.org/2011/02/05/introducing-gmailr-an-unofficial-javscript-api-for-gmail/
他们都在构build具有类似function的复杂API,如果Gmail决定大幅改变其应用程序结构(这是他们不可避免的),那么这些API都可以独立破解。
Gmail通过闭包编译器运行其代码,从而混淆了所有内容。 最重要的是,Gmail可能是最复杂的JavaScript应用程序之一。
由Parse的创始人图书馆 – https://github.com/jamesyu/gmailr – 但在1.5年没有更新。
我可以告诉你我到目前为止,只是知道我不是特别喜欢.oh.JZI.J-J5-Ji.TI-ax7
select器
注意: http : //anurag-maher.blogspot.co.uk/2012/12/developing-google-chrome-extension-for.html (他也是这样做的,他也使用了这样一个混淆的select器)
的manifest.json
"content_scripts": [ { "matches": ["https://mail.google.com/*"], "css": ["mystyles.css"], "js": ["jquery-2.1.0.js", "myscript.js"] } ]
myscript.js
var icon = jQuery(".oh.JZI.J-J5-Ji.TI-ax7") var clone = icon.clone(); clone.attr("data-tooltip", "my tooltip"); clone.on("click", function() { jQuery(".aDg").append("<p class='popup'>... sample content ...</p>"); }); icon.before(clone);
(重用现有的用户界面元素,使我的function看起来很原生)
https://developers.google.com/gmail/gadgets_overview
有侧边栏小工具和上下文小工具,但他们不提供我想要实现的。
Gmail实验室是一个实验性function的testing场,对于黄金时段还没有做好准备。 他们可能随时改变,破坏或消失。
https://groups.google.com/forum/#!forum/gmail-labs-suggest-a-labs-feature开发Gmail实验室的function似乎locking在Google员工身上。
https://developers.google.com/gmail/
需要帮忙? 在gmail标签下的Stack Overflowfind我们。
所以是的,我真的很想知道那里是否有教程/参考资料?
(我回顾了许多“类似的问题”,恐怕我在这里的select是有限的,但是如果我把你的启示甩在我身上,我会非常高兴)
看起来你还没有偶然发现gmail.js项目。 它提供了一个丰富的API,可以使用Gmail。 不过请注意,这个项目不是由Google维护的。 这意味着,Gmail中的任何更改都可能会破坏您的扩展,并且不保证任何人都会更新gmail.js来解决这些更改。
刚刚从Square工程团队http://corner.squareup.com/2014/09/a-different-kind-of-scaling-problem.html
这是一个Chrome扩展程序,当用户鼠标hover在电子邮件联系人上时,会在Gmail的侧边栏中显示联系人信息。 (就像Rapportive一样)
简要介绍应用程序的内容脚本。 它的工作原理如下:
-
检查当前页面是否使用
document.location.href != currentUrl
打开电子邮件(您也可以使用gmail.jsgmail.observe.on("open_email",function())
来实现此目的)。 -
获取包含电子邮件地址的DOM元素。 我发现这个select器适用于发件人:
$(".acZ").find(".gD")
-
使用
injectProfileWidget()
将元素插入到边栏中
我正在开发一个类似的扩展程序,如果您有兴趣,可以在这里显示从Mixpanel提取的联系信息。
这里有一个很好的与Gmail DOM交互的API:
https://www.inboxsdk.com/docs/
入门示例可帮助您将button添加到撰写工具栏。
// Compose Button InboxSDK.load('1.0', 'Your App Id Here').then((sdk) => { sdk.Compose.registerComposeViewHandler((composeView) => { composeView.addButton({ title: 'Your Title Here', iconUrl: 'Your Icon URL Here', onClick: (event) => { event.composeView.insertTextIntoBodyAtCursor('This was added to the message body!') } }) }) })