Javascript 如何为Gmail开发Chrome扩展?
我正在考虑为Gmail开发Chrome扩展,我想知道目前的最佳实践是什么 例如:Javascript 如何为Gmail开发Chrome扩展?,javascript,google-chrome,email,google-chrome-extension,gmail,Javascript,Google Chrome,Email,Google Chrome Extension,Gmail,我正在考虑为Gmail开发Chrome扩展,我想知道目前的最佳实践是什么 例如: 默认情况下,将GPG签名附加到每封电子邮件 添加一个额外的按钮来做一些事情(我已经有了) 发送电子邮件并提示我完成某事的劫持行为 (这些例子帮助我发现什么是可能的) 有很多值得注意的扩展显著增强了gmail的功能: (我与他们中的任何人都没有关系,我只是列举了一些) 一个选择是窥视他们的来源,它位于这里 ~/Library/Application Support/Google/Chrome/Def
- 默认情况下,将GPG签名附加到每封电子邮件
- 添加一个额外的按钮来做一些事情(我已经有了)
- 发送电子邮件并提示我完成某事的劫持行为
- (这些例子帮助我发现什么是可能的)
- (我与他们中的任何人都没有关系,我只是列举了一些)
~/Library/Application Support/Google/Chrome/Default
但是,也许有(一厢情愿的)一套关于如何摆弄gmail用户界面和功能的好教程/练习
您必须以编程方式创建和注入按钮。这将涉及到相当多的Gmail源代码的清理(扰流板:它很难看)
你将面临的最大长期挑战是,gmail的布局将发生意外变化,破坏电子邮件发现或修改后的用户界面。这两个问题要么需要一些聪明的方法来解决,要么需要你夜以继日地思考谷歌是否会突然破坏你的扩展
他们都在构建具有类似功能的复杂API,如果Gmail决定显著改变他们的应用程序结构(他们不可避免地会改变),这些API都可以独立中断
Gmail通过闭包编译器运行其代码,从而混淆了所有内容。除此之外,Gmail可能是最复杂的javascript应用程序之一
Parse的创始人创建的库--但已经有1.5年没有更新了
我可以向您展示到目前为止我所得到的,我知道我并不特别喜欢像
.oh.J-Z-I.J-J5-Ji.t-I-ax7这样的选择器
注:(他也这样做,他也使用这种模糊的选择器)
manifest.json
myscript.js
var icon=jQuery(“.oh.J-Z-I.J-J5-Ji.T-I-ax7”)
var clone=icon.clone();
attr(“数据工具提示”、“我的工具提示”);
clone.on(“单击”,函数(){
jQuery(“.aDg”).append(…示例内容…
”;
});
图标。之前(克隆);
(重用现有UI元素,使我的功能看起来像本地的)
有边栏小工具和上下文小工具,但它们不提供我想要实现的功能
Gmail实验室是一个实验性功能的试验场,这些功能在黄金时段还没有完全准备好。它们可能随时改变、断裂或消失
开发Gmail实验室的能力似乎只限于谷歌员工
需要帮助吗?在gmail标签下的堆栈溢出上找到我们
是的,我真的很想知道是否有任何教程/参考资料?
(我回顾了许多“类似问题”,我担心我在这里的选择是有限的,但如果我将你的启示铭记于心,我将非常高兴)看起来你没有偶然发现这个项目。它提供了一个丰富的API,允许使用Gmail。但是,请注意,这个项目不是由谷歌维护的。这意味着Gmail中的任何更改都可能会破坏您的扩展,并且不能保证有人会愿意更新Gmail.js来解决这些更改。刚刚从Square工程团队那里看到了这篇博文
它是一个chrome扩展,当用户将鼠标悬停在电子邮件联系人上时,会在Gmail的侧栏中显示联系人信息。(就像Rappative一样)
简要描述了应用程序的内容脚本。其工作原理如下:
使用document.location.href!=currentUrl
(您也可以使用gmail.jsgmail.observe.on(“打开电子邮件”,function())
来实现此目的)
获取包含电子邮件地址的DOM元素。我发现这个选择器适用于发送方:$(“.acZ”).find(“.gD”)
使用injectProfileWidget()
我正在开发一个类似的扩展,如果您感兴趣,它可以显示从Mixpanel中提取的联系人信息 这里有一个很好的与Gmail DOM交互的API:
入门示例帮助您向“撰写”工具栏添加一个按钮
// 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!')
}
})
})
})
你说得对,我不知道这件事。当使用搜索引擎搜索Chrome Gmail Extension时,来自顶级媒体网站的搜索结果太多了。。。我可能应该将查询限制在github:)看起来它不再被维护了。。像get.email_id()这样的基本功能对我不起作用。@UriAbramson对我来说很健康-@KonradDzwinel可能与#261 fix.有关。。当它被打开时,它在常规消息windo中不起作用(问题288)。如果它仍然保持不变,那是个好消息!!但不幸的是,这个特定的东西对我来说仍然不起作用。我认为,因此,许多依赖函数,如body()content()等也无法工作……我希望我能提出一个问题:)@michal这是一个伟大的问题。我很想知道你最终构建了什么,特别是我想知道你是否对开源Gmail Chrome扩展有什么建议:谢谢!嗨,丹尼,我正在尝试使用inboxSDK,但我在这方面是全新的。我想跟踪电子邮件,为此我需要每封新邮件的messageID。我尝试了GetMessageID()函数,但现在它正在工作。需要您的小帮助。请检查此链接。
var icon = jQuery(".oh.J-Z-I.J-J5-Ji.T-I-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);
// 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!')
}
})
})
})