mailto 链接在 chrome 扩展弹出窗口中不起作用

Posted

技术标签:

【中文标题】mailto 链接在 chrome 扩展弹出窗口中不起作用【英文标题】:mailto link not working in chrome extension popup 【发布时间】:2011-03-13 06:28:54 【问题描述】:

这个问题让我抓狂了 2 天。我做了一个简单的 chrome 扩展,它调用一个服务器端程序,该程序返回 html,然后我将其填充到弹出窗口中的 div 中。一切都很好,除了包含“mailto:xxx@yyy.com”href 的简单锚链接。不会弹出电子邮件消息撰写窗口。

解决方法:添加 target="_blank" 属性

我想知道为什么这是必要的。

【问题讨论】:

如果您正在做 chrome 扩展,请查看 area51.stackexchange.com/proposals/10910/… 这对我有帮助,但我发现更好的解决方法是使用隐藏的 iframe,而不是打开新的窗口/标签。 @JeremyLawson 我发现如果您在扩展弹出窗口中有很多 mailto: 链接,则执行 iFrame 技巧只能工作一次,随后单击相同或其他 mailto: 链接将不再起作用.. . 【参考方案1】:

这可能与在浏览器的不同处理器中运行的扩展有关,因此需要一个目标属性,以便可以打开一个新的选项卡/窗口......有些网站在显示时不起作用出于这个原因,在扩展弹出窗口中,因为扩展框架不会导航到某些页面...

【讨论】:

【参考方案2】:

我知道这是一个老问题,但我遇到了类似的情况。我必须发送一封电子邮件,但我必须使用按钮而不是链接来完成,并且不得不解决这个问题:

function sendEmail()
    var mail = 'mailto:xxx@yyy.com?subject=Subject&body=Body';
    var newWin = window.open(mail);
    setTimeout(function()newWin.close(), 100);

这并不理想,因为它会打开一个用户可见的新窗口,而不是立即执行。事实上,我的第一次尝试是这样(在 HTML 文件中有效,但在我的扩展中无效):

function sendEmail()
    var mail = 'mailto:xxx@yyy.com?subject=Subject&body=Body';
    window.open(mail).close();

不知道为什么添加计时器使它在这种情况下工作,而不是像在常规 HTML 文件中那样工作,但这对我有用,所以我想我会分享。

【讨论】:

以上是关于mailto 链接在 chrome 扩展弹出窗口中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

如何链接到 chrome 扩展中的选项页面?

使用扩展弹出窗口中的按钮更改 DOM 的 Chrome 扩展

Chrome扩展弹出窗口中的谷歌图表?

在Chrome扩展程序中,如何更改弹出窗口的完整背景颜色?

Chrome扩展弹出窗口中的表单帖子没有做任何事情

如何缩小 chrome 扩展的弹出窗口