javascript - 对于将gmail作为默认邮件处理程序的用户,如何在新选项卡中打开mailto链接?




2 Answers

好的,所以我能够在Mac上的Chrome中使用它。 你的旅费可能会改变。 此外,这是非常hacky IMO,所以它可能不值得。 老实说,这应该作为Chrome中的设置存在,并且行为应该委托给网站。 例如,Chrome应该有一个选项:“[x]始终在单独的标签中打开mailto链接”

话虽如此,这就是你如何做到的。

首先构建您的链接,如下所示:

<a href="#" data-mailto="[email protected]">Mail Somebody</a>

然后为这些设置单击处理程序。

$('a[data-mailto]').click(function(){
  var link = 'mailto.html#mailto:' + $(this).data('mailto');
  window.open(link, 'Mailer');
  return false;
});

window.open有一个可选的参数参数可以调整。 事实上,我几乎会推荐它,看看你是否可以让生成的窗口尽可能不明显。 https://developer.mozilla.org/en/DOM/window.open

http://www.w3schools.com/jsref/met_win_open.asp文档详尽无遗,而w3schools文档几乎更容易阅读)

接下来,我们需要创建mailto.html页面。 现在你可能需要玩下面看到的超时。 你甚至可能把它设置为像500毫秒那么短的东西。

<html>
<script>
function checkMailto(hash){
    hash = hash.split('mailto:');
    if(hash.length > 1){
        return hash[1];
    } else {
        return false;
    }
}

var mailto = checkMailto(location.hash);

if(mailto){
    location.href = 'mailto:'+mailto;
    setTimeout(function(){
      window.close();
    }, 1000);
}
</script>
</html>

结果

Mail.app设置为我的默认电子邮件阅读器:

当我单击该链接时,它会打开一个瞬间的窗口,然后组成一个空白消息。 在浏览器中,它会返回到原始页面。

Gmail设置为邮件阅读器,位于设置>高级>隐私>处理程序:

当我点击该链接时,它会向Gmail打开一个新标签页,其中上一页安全地位于其自己的标签中。

注意:一旦您将Gmail设置为电子邮件处理程序,在操作系统端(至少在Mac上),Chrome就会被设置为系统的电子邮件处理程序。 因此,即使您关闭Gmail作为Chrome中的电子邮件处理程序,它仍然设置在操作系统级别。 所以为了重置它,我去了Mail> Prefs> General。 并将默认邮件阅读器设置回Mail。

在网页上,mailto链接打开默认的电子邮件客户端。 既然Chrome提供了将Gmail设置为默认电子邮件客户端的功能,则某些用户可以在同一窗口中打开这些链接,从而使他们远离他们点击链接的页面(他们不喜欢)

我已经尝试将目标_blank添加到链接,这对gmail用户非常有用,但会让Outlook用户感到愤怒,因为每次单击mailto链接时都会打开一个新的空白选项卡。

我有办法检测默认的电子邮件处理程序,并为这两类用户提供良好的体验?




我只想说,对于Firefox,有一个简单的解决方案。

像这样构建你的链接:

<a href="#" data-mailto="[email protected]">Mail Somebody</a>

为这些设置单击处理程序。

$('a[data-mailto]').click(function(){
  window.open($(this).data('mailto'));
});

如果Chrome也接受它会很棒。




Related

javascript google-chrome gmail handler mailto