さて、これを Mac の Chrome で動作させることができました。あなたのマイレージは異なる場合があります。また、これはかなりハックな IMO であるため、価値がない可能性があります。正直なところ、これは Chrome 内の設定として存在する必要があり、動作は Web サイトに委任する必要があります。たとえば、Chrome には「[x] mailto リンクを常に別のタブで開く」というオプションが必要です。
そうは言っても、これがあなたのやり方です。
最初に次のようにリンクを作成します。
<a href="#" data-mailto="somebody@email.com">Mail Somebody</a>
次に、それらのクリック ハンドラーを設定します。
$('a[data-mailto]').click(function(){
var link = 'mailto.html#mailto:' + $(this).data('mailto');
window.open(link, 'Mailer');
return false;
});
微調整できるオプションのoptions
引数があります。window.open
実際、生成されたウィンドウをできるだけ目立たなくすることができるかどうかを確認するために、ほとんどお勧めします。
https://developer.mozilla.org/en/DOM/window.open
http://www.w3schools.com/jsref/met_win_open.asp (MDN ドキュメントは網羅的ですが、w3schools ドキュメントはほとんど読みやすいです)
次に、mailto.html ページを作成する必要があります。ここで、以下に示すタイムアウトをいじる必要があるかもしれません。おそらく、これを 500ms のような非常に短い値に設定することもできます。
<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 をメール ハンドラとして設定すると、OS 側 (少なくとも Mac では) で、Chrome がシステムのメール ハンドラとして設定されます。そのため、Gmail を Chrome 内のメール ハンドラとしてオフにしても、OS レベルで設定されたままになります。それをリセットするために、私は Mail > Prefs > General に行きました。そして、デフォルトのメールリーダーをメールに戻します。