Safari mailto:“此网站已被阻止自动撰写电子邮件。”

时间:2017-02-07 09:00:44

标签: html safari mailto

使用Safari(iOS 10.2)并点击mailto链接时,会显示确认提示,并显示以下消息:

  

“此网站已被阻止自动撰写电子邮件。”   忽略/允许

我想在我自己的网站上摆脱这个,不知道该怎么做。它可以通过Safari重现,例如在点击邮件图标的任何BBC文章中。

Screenshot of dialogue on iPad

我的网络研究带我到这些链接:

https://discussions.apple.com/thread/7763735

  

WillieFromColo 2017年1月11日上午8:25回应Russ G

     

Safari的问题和“此网站已被阻止   自动撰写电子邮件。“

     

我对Google的研究表明此错误类型消息已启动   大约在11月份发生了对Safari的更新,很可能   与Apple对iOS 10.2的更新同时发生。截至今日   (1/11/17)这是适用于iPad的iOS的最新版本   iPhone也是。

     

[...]

https://developer.apple.com/safari/technology-preview/release-notes/#r15

  

第15版   网址处理

     

导航到tel:和mailto:链接现在需要用户手势;   没有用户手势的导航将显示确认提示

所以它看起来像Safari“功能”。有谁知道如何阻止这个提示?

6 个答案:

答案 0 :(得分:5)

各种第三方JavaScript库将拦截a属性的点击,以防止在向服务器发送数据时短暂导航。通常,他们以编程方式通过window.location.replace触发导航。

当以这种方式触发mailto / tel链接时,Safari中的更改会弹出警告。

是一种互动,但这通常是preventDefault停止的,Safari并不关心。

如果您使用导致此问题的库,请与创建者联系,看看他们是否可以更新它以跳过mailto / tel链接上的preventDefault

答案 1 :(得分:2)

我最初没有提到的是我们从out page的JavaScript部分调用了mailto。我们现在再次尝试通过更改为基于HTML标签的mailto(使用to和subject)来解决问题,现在它在某种程度上无需拨号即可工作。 所以我认为这个问题已经解决了,但我对任何解释原因的提示持开放态度。因此,我现在不将此答案标记为解决方案。

答案 2 :(得分:0)

发生了使用,因为我们使用window.open(...)在新窗口中打开该链接。

仅为Safari取代window.location.href = ...:facepalm:。

答案 3 :(得分:0)

我们遇到了类似的问题-并且已确定该问题是通过Google跟踪代码管理器触发的。

具体来说,我们在包含mask = (df['Attribute:Value'].str.extract(':(\d+)', expand=False).astype(int).gt(3) | df['Support'].gt(4)) 前缀的所有df1 = df[mask] print (df1) Attribute:Value Support 0 VDM:1 9 3 VDM:4 0 4 VDM:5 1 6 MDM:2 6 8 MDM:4 3 9 MDM:5 1 11 OM:2 6 13 OM:4 3 14 OM:5 1 元素上触发了事件(在标记管理器中)。 我们更改了要通过单击锚标记内嵌套的const resolvers = { Query: { async getStudent (root, { id }, { models }) { return models.User.findByPk(id) }, }, Mutation: { async createUser (root, { name, email }, { models }) { return models.User.create({ name, email }) }, }, } 元素来触发的事件。

这既允许在跟踪代码管理器中跟踪事件,也可以删除有问题的用户提示。 例如。

const { gql } = require('apollo-server-express');
const typeDefs = gql`
    type User {
        id: Int!
        name: String!
        email: String!
    }
    type Query {
        getUser(id: Int!): User
        getAllUsers: [User!]!
    }
    type Mutation {
        createUser(name: String!, email: String!): User!
    }`
module.exports = typeDefs;

答案 4 :(得分:0)

当使用 Google跟踪代码管理器跟踪邮件链接时,我们遇到了这个问题。

我找到了无需修改dom的解决方案。

我们已使用选项“ 等待标签”和“ 最长等待时间”为2000毫秒激活了触发类型“点击-只是链接”。

禁用此选项后,该消息不再出现。 另一个解决方案是使用“点击-所有元素”(这始终有效)。

答案 5 :(得分:0)

此处的解决方案均无效。有一个插件/脚本将自身附加到引起该行为的click事件上。我最终使用jquery与jQuery创建mailto:链接。

以这种方式添加html电子邮件

<span class="email-link">email@email.com</span>

并添加此jquery以将<span>转换为链接

$(function() {
  $( ".email-link" ).each(function( index ) {
    var a = $('<a />');
    var link = $( this ).text();
    a.attr('href', 'mailto:' + link );
    a.text(link);
    $( this ).html(a);
  });
});        

这样,您可以避免将任何外部脚本附加到mailto链接单击事件。