【问题标题】:mailto: URL not working in jQuery bound event handlermailto:URL 在 jQuery 绑定事件处理程序中不起作用
【发布时间】:2016-11-12 02:59:56
【问题描述】:

我有一个图标,点击它会触发mailto: URL。看起来很简单,但它不起作用。调试时,我单击该图标,事件处理程序会触发并执行其中的代码,但随后什么也不做。为什么这不起作用?

<i id="email-icon" class="fa fa-envelope"></i>
$("#email-icon").on("click", function () {
    window.location.href = "mailto:mail@example.org";
});

我感觉事件在 jQuery 中被取消了?

【问题讨论】:

  • 对我来说似乎工作正常:jsfiddle.net/RoryMcCrossan/213zs2w9。控制台中是否有任何错误,或其他干扰事件的代码?例如,附加到父元素的东西。另外,你的机器上安装了邮件客户端吗?
  • jQuery 没有说明分配给 location.href 时会发生什么。浏览器确实有发言权,我明白它为什么不喜欢这样。
  • @RoryMcCrossan:除了 Chrome,我还没有尝试过任何东西。你碰巧用的是什么浏览器?
  • @JanDvorak:你明白它为什么不喜欢它了吗?你看到它有什么问题吗?请解释一下。
  • 从这种行为来看,我猜问题是由于客户端机器试图打开邮件链接的程序。在这种情况下,作为开发人员,你无能为力

标签: javascript jquery mailto


【解决方案1】:

尝试创建直接链接:

$("#email-icon").on("click", function () {
    var link = "mailto:mail@example.org";
    var obj = $("<a href=\"" + link + "\" target=\"_new\"><span></span></a>");
    obj.appendTo("body");
    obj.children("span:eq(0)").trigger("click");
    obj.remove();
});

【讨论】:

  • 我尝试了这个并在 chrome 上打开了一个新标签,该标签放在导航栏上:mailto:email@domain.com 并且不执行任何操作
  • 您好抱歉耽搁了,您尝试删除/不使用属性 target=\"_new\"
【解决方案2】:

所以,回答我自己的问题....

我的代码实际上没有任何问题。问题在于我的新机器是怎么配置的!

在控制面板中查看我的默认程序时,我看到 Chrome 被设置为处理 MAILTO 协议的默认程序。 :-(

我使 Outlook 成为该协议的处理程序,然后它按预期工作。不知道这是怎么发生的,但我想我会发布它以防其他人在路上遇到这个问题。

感谢Rory McCrossan的调查。

【讨论】:

    【解决方案3】:

    试试这个:

    <a href="mailto:mail@example.org"><i id="email-icon" class="fa fa-envelope"></i></a>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-26
      • 1970-01-01
      • 1970-01-01
      • 2017-02-20
      • 2010-10-22
      • 1970-01-01
      • 1970-01-01
      • 2020-05-01
      相关资源
      最近更新 更多