href=tel:555 链接在移动 Safari 中不起作用
Posted
技术标签:
【中文标题】href=tel:555 链接在移动 Safari 中不起作用【英文标题】:href=tel:555 link not working in mobile safari 【发布时间】:2011-12-04 15:34:47 【问题描述】:我正在设计一个移动页面,并且正在使用以下(我相信是标准的)代码让电话拨打电话号码。
<a href="tel:555-1234567" class="call"><img src="graphics/call-icon.gif" ></a>
这在 android 中运行良好,但 Mobile Safari 出现以下错误:
无法打开页面Safari 无法打开页面,因为地址是 无效
【问题讨论】:
您是否尝试从电话号码中删除破折号? IE。只保留数字。 我正在 ios 模拟器上测试是否相关。 查看此链接***.com/questions/1164004/… 如果您使用的是模拟器并且您没有手机应用程序,它将无法工作。 ***.com/a/13373055/317832 【参考方案1】:<a class="font-13 color-theme" onclick="window.open('tel:+84935002102');">Call</a>
【讨论】:
【参考方案2】:2021 在这里更新,我正在为 android 和 ios 构建一个 Ionic 应用程序,并且在获取手机的链接以在 safari 中工作时遇到问题,我所做的解决问题的方法是创建一个小型实用程序函数(打字稿)以这种方式清除任何字符的电话号码:
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 构建应用程序的新手
【讨论】:
【参考方案3】:以下内容对我有用,希望对您有所帮助。
<a href="javascript:void(0)" onclick="window.location='tel:8005555555'" class="call">800 555 5555</a>
它应该适用于 ios chrome 和 safari。
【讨论】:
【参考方案4】:您可能想在超链接标签中添加target="_blank"
。
它对我有用。
通过link了解更多关于target="_blank"
的信息
【讨论】:
【参考方案5】:如果您的电话号码在 safari 上没有显示仍然有问题,我遇到了完全相同的问题,我发现如果您不使用网络友好字体,它将不会显示尝试更改号码的字体到 Verdana 或 Arial。我使用了应该是网络友好的谷歌网络字体,但即使这样也破坏了我的号码。
希望这行得通。
【讨论】:
【参考方案6】:您的标记很好,它适用于我的 iPhone(3GS,运行 4.3.5)。它在 iOS 模拟器上不起作用(是的,有“无法打开页面 - Safari 无法打开页面,因为地址无效”错误),但我不希望它,因为你不能让调用它(那个或旧版本的 iOS 有问题)。
【讨论】:
这种情况在 2018 年仍在发生…… ...2020 年仍在发生 您需要提供完整的电话号码,包括国家/地区前缀。然后在 Safari 中,至少版本 14 可以正常工作。【参考方案7】:要在 Safari/iOS 中使用电话号码,您需要像在旧广告中一样正确格式化电话号码。
<a href="tel:1-555-123-4567" class="call">
----- OR -----
<a href="tel:15551234567" class="call">
【讨论】:
不,仍然得到同样的错误。我还从您的答案 chown 添加了元 taag 无济于事。我还尝试了设置为 tel:171 的链接,这是爱尔兰的标准语音信箱号码。 我很欣赏此选项提供的灵活性,更不用说与 iOS 上的 Chrome 的兼容性了。 (经过验证适用于 iOS 10.2.1 上的 Chrome 和 Safari)这个答案似乎经受住了时间的兼容性测试。【参考方案8】:在您的<head>
中输入:
<meta name="format-detection" content="telephone=yes">
来自Safari html Reference:
这启用或禁用可能的自动检测 iOS 上 Safari 中网页中的电话号码。语法讨论 默认情况下,iOS 上的 Safari 会检测任何格式化为手机的字符串 号码并使其成为呼叫该号码的链接。指定 phone=no 禁用此功能。可用性 在 iOS 1.0 中可用 然后。支持级别 Apple 扩展。
【讨论】:
我只是想补充一下,在 Safari 完成这个技巧之后,电话号码“1-555-555-5555”变成了<a href="tel:1-555-555-5555">1-555-555-5555</a>
优雅的流线型方法,但不幸的是不适用于 iOS 版 Chrome。以上是关于href=tel:555 链接在移动 Safari 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
href 标记无法在新的 web 视图或移动 Safari 中打开