【问题标题】:Copy selection into email recipient using JavaScript使用 JavaScript 将选择复制到电子邮件收件人
【发布时间】:2014-01-15 11:45:45
【问题描述】:

我想尝试 Chrome 扩展程序有一段时间了,而 Chrome 一直困扰着我的一件事是,单击活动的 mailto: 链接会在同一个选项卡中打开 GMail(如果它是您的处理程序),然后导航离开从页面。

当您使用 Gmail 处理程序单击 mailto: 链接时,它会获取链接的电子邮件地址并将其附加到撰写窗口:

https://mail.google.com/mail/?view=cm&fs=1&tf=1&source=mailto&to=youremail@somesite.com

我想做的是创建一个扩展程序,它为我提供了一个上下文菜单选项来撰写新电子邮件。我已经掌握了基础知识(见下文),但我不知道如何让收件人电子邮件地址自动包含在弹出窗口中。

manifest.json:

"background": {
  "scripts": [ "background.js" ]
   },

"description": "Creates a context menu option which copies the selected address into a new Gmail compose window.",

"manifest_version": 2,
"name": "New Gmail Window",
"permissions": [ "tabs", "contextMenus" ],
"version": "0.1"
}

background.js

function getEmail(info, tab) {
    chrome.windows.create({
        url: "https://mail.google.com/mail/?ui=2&view=cm&fs=1&tf=1&shva=1&", // This is the URL I need to figure out.
        width: 640,
        height: 700,
        focused: true,
        type: "popup",
    })
}

chrome.contextMenus.create({
    title: "Send Email",
    contexts: ["selection"],
    targetUrlPatterns: ["mailto:* "],
    onclick: getEmail,
});

【问题讨论】:

    标签: javascript google-chrome google-chrome-extension


    【解决方案1】:

    您已经完成了 99% 的工作。这是获取电子邮件地址的简单方法:

    url: "https://mail.google.com/mail/?ui=2&view=cm&fs=1&tf=1&shva=1&to="+info.linkUrl.substr(7), 
    

    info.linkUrl 抓取整个“mailto:someone@domain.com”,而.substr(7) 只是切断了"mailto:" 部分。

    补充说明:

    • 谁愿意选择(即突出显示)电子邮件链接?我建议在上下文中包含链接 (contexts: ["selection", "link"])。
    • 你的末尾有一个空格targetUrlPatterns (["mailto:* ")。我不确定为什么它没有弄乱我尝试过的选择。但是,当您将“链接”添加到上下文以便能够通过右键单击发送电子邮件时,它确实会搞砸。

    【讨论】:

    • 另外,我不想这么说,但是有一些扩展已经这样做了。例如,Send using Gmail 如果您在设置中选择“在新窗口中”选项,则会在弹出窗口中打开合成网址。
    • 我确实找到了那个,但出于几个原因,我想自己做这个。 1、获得一些经验。 2,我尝试了那个扩展,但我无法让“新窗口”选项工作。 3,我希望能够自定义这个以自己使用,我可能不会发布它。那会让我乱七八糟而不会搞砸其他人。不过,谢谢您的帮助。稍后我会玩它,看看效果如何。
    • 只是我们的好奇,“选择”上下文项会将选择的文本拉入电子邮件收件人吗?例如,有人列出了他们的电子邮件,但没有作为链接列出。如果我突出显示它,是否应该将其放入 to: 字段中?
    • 不,上下文设置中声明的选项数组仅控制 chrome 何时将您的自定义项添加到上下文菜单(所有右键单击?仅当右键单击图像时?仅当右键单击突出显示/选择?等)。但是,一旦您从上下文菜单中选择了一个菜单选项,Chrome 就会将相同的信息包发送到注册为处理程序的 javascript 函数 - 请参阅 the developer documentation
    • 意识到我没有像我应该的那样直接回答你的问题。如果右键单击链接,则链接的href 将返回为info.linkUrl(假设您将返回的包命名为“info”)。如果右键单击是选择,则所选文本将返回为info.selectionText。如果您想处理不在链接中的电子邮件,您可以执行类似“if info.linkUrl=nothing but info.selectionText=something, to=selectionText”之类的操作
    猜你喜欢
    • 2019-06-23
    • 1970-01-01
    • 2012-09-15
    • 1970-01-01
    • 1970-01-01
    • 2012-02-20
    • 2013-09-02
    • 2021-06-13
    • 1970-01-01
    相关资源
    最近更新 更多