检测mailto失败的时间

时间:2011-08-27 12:54:03

标签: javascript css forms mailto server-side

当使用mailto链接时,如果他没有设置电子邮件客户端,或者没有将他的网络邮件设置为他的默认客户端,那么它对用户没有任何作用(ea。{{3} })。 什么是优雅地提供回退的最佳方式,请用户手动给您发送电子邮件? 单击链接后,我可以使用JS或css显示消息:

  

提交成功,或者如果没有任何反应,请手动给我们发电子邮件。

如果使用带有mailto的表单,我可以在没有或使用服务器端脚本的情况下成功使用重定向页面吗?有没有办法从失败中过滤掉成功,而不是依靠用户对上述双重成功/失败消息的判断?

编辑:至少在点击mailto链接(或表单)时更改状态的最佳方式是什么。显然JavaScript或CSS是选项,但我不能简单地创建双动作链接或表单提交; mailto并链接到另一个页面(您已经提交/点击了按钮')

3 个答案:

答案 0 :(得分:10)

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);

答案 1 :(得分:1)

您无法检测用户是否设置了电子邮件客户端。因此,我建议您设置服务器端表单,以便用户与您联系。

在此之下或之上,您可以向用户提供一个链接,向他解释如果他想通过他的主电子邮件帐户直接与您联系,他可以单击此链接(此链接为mailto:链接)。

通过向他提供两种联系方式(网络表单或电子邮件客户端),您可以让用户选择他想要使用的方式。所以他应该意识到他是否安装了电子邮件客户端以及他是否想要使用它。

答案 2 :(得分:0)

使用JavaScript confirm popup询问用户是否在其计算机上设置了电子邮件。