2011-08-27 4 views
8

メールリンクを使用すると、電子メールクライアントの設定がない場合、または自分のウェブメールをデフォルトのクライアントに設定していないと、ユーザーには何もしない可能性があります。 gmail as default client in macosx)。 優雅にフォールバックを提供するための最良の方法は、親切にユーザーに手動でメールを送信するように求めていますか? リンクがクリックされた後、私は、メッセージを表示するJSやCSSを使用することができます。 mailtoが失敗したときを検出

が提出

が成功したか、何も起こらなかった場合は、手動でメールでお問い合わせください。

mailtoでフォームを使用すると、サーバーサイドスクリプトなしで、またはサーバーサイドスクリプトで成功すると、リダイレクトページを使用できますか?上の二重成功/失敗メッセージでユーザーの判断に頼るのではなく、失敗からの成功をフィルタリングする方法はありますか?

編集:少なくともmailtoリンク(またはフォーム)がクリックされたときの状態を変更する最も適切な方法は何でしょうか。明らかにJavaScriptやCSSはオプションですが、単にダブルアクションのリンクやフォームのサブミットを作成することはできません。 mailtoと別のページにリンクしています(ボタンを送信/クリックしました)

+4

「mailto: 'は悪いです - 信頼してください、誰も理由なしで電子メールクライアントを開くのが好きではありません。代わりにサーバー側のフォームを使用してください:)。 – xfix

+1

"mailto:"リンクがユーザーに対して "動作する"かどうかについては何も教えてくれません。 – Pointy

+0

関連:http://stackoverflow.com/questions/836777/how-to-detect-browsers-protocol-handlers – DaveRandom

答えて

1

ユーザーが電子メールクライアントを設定しているかどうかを検出することはできません。だから私はあなたに連絡するためのユーザーのためのサーバー側のフォームをセットアップすることをお勧めします。

この下またはそれ以上で、メイン電子メールアカウントから直接連絡を取りたい場合は、このリンクをクリックすることができます(このリンクはmailto:リンクです)。

あなたに連絡する2つの方法(ウェブフォームまたは電子メールクライアント)を提供することで、彼は自分が使いたいものを選択する機会をユーザに与えます。それで、彼に電子メールクライアントがインストールされているかどうか、そして彼がそれを使いたいかどうかを認識するのは彼の責任です。

+1

私はmailtoリンクを使いたいと考えている理由があり、連絡フォームのベストプラクティスに精通しています。私はクリック時に状態変化を得ることにもっと興味があります(質問の編集を参照してください) – newnomad

0

JavaScript confirm popupを使用して、コンピュータに電子メールがセットアップされているかどうかを確認します。

+0

mailtoがフォーム内のアクションの形式である場合は、チェックボックスをオンにします。あなたがそれについて考えている人に気をつけたいときに、UIの決定を推測してください。 – newnomad

+1

はい、私は電子メールを設定しました。私はブラウザにGmailを入力するだけです。質問(と[しない](http:// w3fools。com /)は、参考としてW3Schoolsをお勧めします) – Quentin

+0

もう1つのアプローチは、リンクの隣に読みやすくコピー可能な電子メールアドレスを提供することです。 http://stackoverflow.com/questions/6028471/mailto-with-no-default-email-client – newnomad

8

This articleは、mailtoをクリックした後にwindowのブラーイベントが発生したかどうかを確認するハックについて説明しています。それはタイムアウトを使用しているので、簡単ではありませんが、ほとんどの場合に対処する可能性があります。

(function($)) { 
    $('a[href^=mailto]').each(function() { 
    var href = $(this).attr('href'); 
    $(this).click(function() { 
     var t; 
     var self = $(this); 

     $(window).blur(function() { 
     // The browser apparently responded, so stop the timeout. 
     clearTimeout(t); 
     }); 

     t = setTimeout(function() { 
     // The browser did not respond after 500ms, so open an alternative URL. 
     document.location.href = '...'; 
     }, 500); 
    }); 
    }); 
})(jQuery); 
関連する問題