【问题标题】:mailto link not working within a frame chrome (over https)mailto 链接在框架 chrome 中不起作用(通过 https)
【发布时间】:2013-10-14 14:34:36
【问题描述】:

我的页面上有一个 mailto 链接。当页面自行加载时,它会按预期工作。

但是,当页面通过 Chrome 中的框架集加载时,没有任何反应。加载开发者工具后,会显示错误"[blocked] The page at https://mysite.com ran insecure content from mailto:..."

我该如何解决/解决这个问题?

【问题讨论】:

标签: html google-chrome mailto


【解决方案1】:

是的,使用“top”是诀窍,但你可以单独使用 HTML!

<a target="_top" href="mailto:...">email</a>

【讨论】:

  • 这太棒了。它允许 mailto 链接现在使用 Chrome 浏览器在 iframe 中工作。非常感谢!!!
  • 我在 Facebook 框架中创建 mailto: 链接时遇到问题。这有效!
  • 直到现在才知道“_top”是干什么用的(真丢脸)。这也解决了我在一系列 Android 手机上遇到的一些问题。谢谢!
  • 还修复了mailto: 使用 URL 框架掩码转发 URL 时的链接!
  • 我建议使用 _blank 而不是 _top。如果用户将基于 Web 的电子邮件客户端设置为默认电子邮件工具,则电子邮件客户端页面会将父页面替换为 _top。
【解决方案2】:

我最近在 iframe 上也遇到了这个问题。使用顶部框架有效,并且应该与所有主流浏览器兼容。

window.top.location = 'mailto:...';

【讨论】:

  • 所以你必须编写一个javascript onclick(或类似的东西)来处理这个mailto:链接?我只是在寻找这个解决方案的语法。
  • 是的,使用“top”是诀窍,但您可以单独使用 HTML 来做到这一点! 电子邮件
  • 嗨,我今天刚遇到这个问题.. 这个解决方案有效。但是我只想了解它为什么有效?为什么将目标设置为_top 有效?如果锚链接在 iFrame 之外,浏览器是否不关心检查安全性?
  • 尝试了所有组合,这是唯一一个在 Chrome 中为我工作而无需打开空白窗口的组合
  • @kendsnyder 我正在使用一个接受 onClick 的组件,对我来说这是唯一有效的方法。我不能为此使用 HTML,即它需要通过回调以编程方式触发。
【解决方案3】:

这是我最终得到的解决方案: 通过 Chrome、Firefox、IE6、IE7、IE8、IE9、IE10、IE11、Safari 测试

$("a[href^='mailto:']").on("click",function() {
    window.top.location = $(this).prop("href");
    return false;
});

【讨论】:

  • 奇怪的是我无法让它工作 - 它似乎在 jquery 的某个地方死了(我们仍在使用 V 1.6.1)。但是,一旦我使用了 click 方法,它就运行良好。好东西。
  • 是的,on 是新版本 jQuery 的新点击。
【解决方案4】:

添加 target="_top" 或 "_blank" 或 "_parent"

&lt;a target="_top" href="mailto:a@b.c"&gt;email1&lt;/a&gt;

&lt;a target="_top" href="mailto:a@b.c"&gt;email2&lt;/a&gt;

【讨论】:

    【解决方案5】:

    这也可以,并且不会关闭 Facebook 窗口。

    <a href="mailto:..." target="_blank">...</a>
    

    $("a[href^='mailto:']").attr('target','_blank');
    

    【讨论】:

      【解决方案6】:

      可能是因为您的父框架集是 https,但 Chrome 现在似乎将 mailto 链接视为不安全。

      我在通过触发mailto链接时遇到了类似的问题

      window.location = 'mailto:...'
      

      把它改成这个就可以了。

      window.open( 'mailto:...')
      

      【讨论】:

      • 这听起来像是一个错误?在什么情况下我应该提交错误报告?
      • 好的,您的解决方法确实会打开一封新电子邮件,但它也会打开一个新的空白选项卡/窗口,这是不可取的。我用谷歌打开了一个错误报告。
      • 是的。我们必须编写脚本立即关闭,这仍然有点垃圾。
      【解决方案7】:

      在 Chrome 错误修复之前,这是我的解决方法:

      $.browser.chrome = /chrom(e|ium)/.test(navigator.userAgent.toLowerCase()); 
      
      if($.browser.chrome){
           myWindow=window.open("mailto:"+eml+"?subject="+msb,'','width=50,height=50');
           myWindow.close();
      } else {
          window.location.href = "mailto:"+eml+"?subject="+msb;
      }
      

      对于 Chrome,使用 window.open() 方法创建实例并立即关闭该实例。小窗口会在短时间内“闪烁”,但会完成这项工作。这是“肮脏”的解决方案,但与 Chrome 的错误一样多。

      对于其他浏览器,可以使用 window.location() 方法。

      【讨论】:

        猜你喜欢
        • 2012-07-24
        • 2017-07-31
        • 2012-05-26
        • 2011-12-14
        • 2011-03-13
        • 2018-04-14
        • 2013-04-03
        • 1970-01-01
        • 2017-07-09
        相关资源
        最近更新 更多