2011-08-27 72 views
8

當使用郵件鏈接時,如果用戶沒有電子郵件客戶端設置,或者沒有將他的webmail設置爲默認客戶端(例如, 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:鏈接)。

通過爲他提供兩種聯繫方式(網絡表單或電子郵件客戶端),您可以讓用戶有機會選擇他想使用的方式。所以他應該知道他是否安裝了電子郵件客戶端以及是否要使用它。

+1

我有很好的理由想要使用mailto鏈接,並且熟悉聯繫表單的最佳做法。我更感興趣的是通過單擊來獲取狀態更改(請參閱編輯問題) – newnomad

0

使用JavaScript confirm popup詢問用戶他們是否在他們的計算機上安裝了電子郵件。

+0

或者如果mailto採用表單中操作的形式,則只是一個複選框。猜猜這是一個用戶界面決定,當你想打擾用戶考慮它,在點擊之前或之後... – newnomad

+1

是的,我有電子郵件設置,我只是在我的瀏覽器中鍵入Gmail ...不要假設用戶會明白問題(和[不]](http:// w3fools。com /)推薦W3Schools作爲參考) – Quentin

+0

另一種方法是在鏈接旁邊提供一個可讀,可複製的電子郵件地址; 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);