移动Safari中href = tel:555链接无法工作

19
我正在设计一个移动页面,并使用以下(我相信是标准的)代码来拨打电话号码。
<a href="tel:555-1234567" class="call"><img src="graphics/call-icon.gif" alt="call-icon" width="45" height="50"></a>

这在Android上可以正常工作,但是在移动Safari上我会收到以下错误信息:

无法打开页面
Safari无法打开该页面,因为地址无效。


你尝试过从电话号码中删除破折号吗?即只保留数字。 - ulidtko
我正在iOS模拟器上进行测试,如果相关的话。 - Iolo
请查看此链接:https://dev59.com/aHM_5IYBdhLWcg3w8H82 - zeenfaiz
如果您正在使用模拟器,而没有安装手机应用程序,则无法正常工作。 - Sanchitos
8个回答

16

你的标记很好,我的iPhone(3GS,运行4.3.5)上可以正常工作。但它在iOS模拟器上不能工作(是的,“无法打开页面- Safari无法打开页面,因为地址无效”错误),但我不会指望它能工作,因为你不能在模拟器上进行电话呼叫(或者是旧版本的iOS有问题)。


1
这在2018年依然在发生... - nils
5
仍然发生在2020年。 - Lucio
2
您需要提供完整的电话号码,包括国家前缀。然后在 Safari 中,至少版本 14,一切都正常运作。 - Cezary Tomczyk
...并且仍然是2023年。 - mukolweke

11

在你的<head>中放置以下内容:

<meta name="format-detection" content="telephone=yes">

来自Safari HTML参考手册:

这个选项在iOS Safari中启用或禁用了网页上可能出现的电话号码的自动检测功能。默认情况下,Safari会检测任何格式类似于电话号码的字符串,并将其转换为可以拨打的链接。指定telephone=no可禁用此功能。 可用性:iOS 1.0及更高版本。支持级别:Apple扩展。


我只是想补充一下,Safari完成这个操作后,电话号码“1-555-555-5555”会变成<a href="tel:1-555-555-5555">1-555-555-5555</a> - Graham P Heath
优雅简洁的方法,但不幸的是在iOS的Chrome上无法工作。 - Chad

6

在Safari/iOS中使电话号码正常工作,您需要正确格式化电话号码,就像在旧广告中列表中一样。

<a href="tel:1-555-123-4567" class="call">
----- OR -----
<a href="tel:15551234567" class="call">

不行,还是出现同样的错误。我也按照你的答案添加了meta标签chown,但没有效果。我还尝试将链接设置为tel:171,这是爱尔兰的标准语音邮件号码。 - Iolo
我很欣赏这个选项提供的灵活性,更不用说它与iOS上的Chrome兼容了。(已验证可在iOS 10.2.1上使用Chrome和Safari) 这个答案似乎经受住了时间的兼容性测试。 - Chad

5

您可能希望在超链接标签中添加 target="_blank"

对我来说这很有效。

请在此链接中阅读更多关于target="_blank"的信息。


1
<a class="font-13 color-theme" onclick="window.open('tel:+84935002102');">Call</a>

1
如果您的电话号码在Safari上没有显示出来,我也遇到了完全相同的问题,我发现如果您不使用适合Web的字体,它将无法显示,请尝试更改数字的字体为Verdana或Arial。我使用了Google Web字体,应该是Web友好的,但即使如此,我的号码也出现了错误。
希望这能解决问题。

0

2021年更新,我正在为Android和iOS构建Ionic应用程序,并且在Safari中无法获取电话链接时遇到了麻烦。我解决问题的方法是创建一个小型实用函数(TypeScript),以清除任何字符的电话号码:

cleanPhoneNumber(text: string): string {

    const cleanText = text.trim()
        // INITIAL CHAR
        .replace(/\+/g, '')
        // COMMON SEPARATORS
        .replace(/\-/g, ' ').replace(/\./g, ' ')
        // RARE CHARACTERS
        .replace(/\_/g, '').replace(/\,/g, '').replace(/\:/g, '').replace(/\;/g, '').replace(/\~/g, '');

    return cleanText;
}

像“+”或“-”这样的字符会导致Safari无法正确处理href:tel(尽管Chrome或Firefox可以正常处理)

希望这能帮助像我一样为iOS构建应用程序的新手。


0

以下方法对我有用,希望能帮到你。

<a href="javascript:void(0)" onclick="window.location='tel:8005555555'" class="call">800 555 5555</a>

它应该在iOS的Chrome和Safari上都能正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接