我很惊讶在网上找不到关于这个问题的明确答案:我正在设置一份翻译成法语的HTML页面,其中包含一个以“+33(0)”开头的不同联系电话。由于我无法亲自测试此号码,这是一个经典问题:我是否可以使用以括号中包含数字并带有其余数字的锚标签 <a href="tel:+33(0)..."
并使链接正常工作?
我很惊讶在网上找不到关于这个问题的明确答案:我正在设置一份翻译成法语的HTML页面,其中包含一个以“+33(0)”开头的不同联系电话。由于我无法亲自测试此号码,这是一个经典问题:我是否可以使用以括号中包含数字并带有其余数字的锚标签 <a href="tel:+33(0)..."
并使链接正常工作?
很好的问题。关于href="tel:"
的明确且权威的答案很难找到。
RFC 3986 (Section 2.2) 定义圆括号为“保留子分隔符”。这意味着当它们在URL的某些部分中使用时,它们可能具有特殊含义。RFC说:
URI生成应用程序应该对与保留集中字符对应的数据八位组进行百分号编码,除非这些字符被URI方案明确允许用于表示该组件中的数据。如果在URI组件中发现保留字符,并且该字符没有已知的分隔角色,则必须将其解释为表示与US-ASCII中该字符编码对应的数据八位组。
(重点是我)
基本上,在URL中可以使用US-ASCII字符集中的任何字符。但是,在某些情况下,圆括号被保留用于特定用途,在这些情况下,它们应该进行百分号编码。否则,它们可以保留原样。
所以,是的,您可以在href="tel:"链接中使用括号,并且它们应该适用于所有浏览器。但是,像现实世界中的任何Web标准一样,性能取决于每个浏览器正确实现该标准。<a href="tel:+33(0)...
),我建议避免使用您提供的格式,即:
[国家代码]([替换为国内呼叫者的前导零] [地区代码] [电话号码])
虽然我无法找到关于浏览器如何处理此类情况的明确指南,但我认为您会发现,正如@DigitalJedi所指出的那样,一些(或许全部?)浏览器将剥离括号并保留其中包含的数字,最终导致错误的号码,例如:
<a href="tel:+33(0)1234567890">+33 (0) 123 456 7890</a>
...这可能会导致拨打+3301234567890的电话。
这还有效吗?也许?现在我们涉及到电话号码路由领域了。
一些浏览器/设备可能足够聪明,能够理解所需内容并相应地进行调整,但我建议安全起见,改为使用:
[国家代码][区号][电话号码]
,例如:
<a href="tel:+331234567890">+33 123 456 7890</a>
或者
<a href="tel:+331234567890">(0) 123 456 7890</a>
据我所知,让本地用户拨打国际区号没有任何负面影响 - 这将导致与省略国际区号并替换前导零相同的结果。
最后,这是一些关于电话链接的半相关、有用的信息:https://css-tricks.com/the-current-state-of-telephone-links/
href
属性中的 ()
不应该是问题:(从 href 的角度来看)
http://example.com/test(1).html
然而,如果我使用 a href="tel:+000 (1) 000 000"
,在手机上点击链接后,我的手机拨号将显示 +0001000000
。这已在Android设备上测试并确认。
这意味着括号和空格被移除了。
但由于不同的手机操作系统,结果仍可能有所不同。
P.S.:
如果你认为数字中的+
是个问题... 我也测试过了,+
没有任何意外的行为。
更多信息:href="电话:"和手机号码
我读过并记得正确的格式应该是: +33.1 23 45 67 89 但我找不到来源。