Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何为Gmail开发Chrome扩展?_Javascript_Google Chrome_Email_Google Chrome Extension_Gmail - Fatal编程技术网

Javascript 如何为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

我正在考虑为Gmail开发Chrome扩展,我想知道目前的最佳实践是什么

例如:

  • 默认情况下,将GPG签名附加到每封电子邮件
  • 添加一个额外的按钮来做一些事情(我已经有了)
  • 发送电子邮件并提示我完成某事的劫持行为
  • (这些例子帮助我发现什么是可能的)
有很多值得注意的扩展显著增强了gmail的功能:

  • (我与他们中的任何人都没有关系,我只是列举了一些)
一个选择是窥视他们的来源,它位于这里
~/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.js
    gmail.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!')
                }
            })
        })
    })