2011-08-27 74 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);