惊讶的是,我在网上都找不到关于这个问题的确切答案:我正在建立一个法语翻译的HTML页面,其其他联系号码以“ +33(0)”开头。由于我无法亲自对此编号进行测试-一个规范的问题:我能否摆脱以<a href="tel:+33(0)..."
开头的锚标记,即括号中包含一个数字,后面紧跟其余数字并可以正常工作?
答案 0 :(得分:1)
好问题。很难找到关于href="tel:"
的明确,权威的答案。
RFC 3986 (Section 2.2)将括号定义为“保留的sub-delims”。这意味着当它们在URL的某些部分中使用时,它们可能具有特殊含义。 RFC说:
产生URI的应用程序应该对数据八位字节进行百分比编码, 对应于保留集中的字符 ,除非这些字符 URI方案特别允许在其中表示数据 。如果在URI组件中找到了保留字符,并且 没有知道该角色的定界角色,则必须 解释为表示与之对应的数据八位字节 字符的US-ASCII编码。
(强调我的)
基本上,您可以在URL的US-ASCII character set中使用任何字符。但是,在某些情况下,括号是保留给特定用途的,在这些情况下,应该对它们进行百分比编码。否则,它们可以保留不变。
因此,是的,您可以在href="tel:"
链接中使用括号,并且括号应该在所有浏览器中都可以使用。但是,如同现实世界中的任何Web标准一样,性能取决于每个浏览器是否正确实现该标准。
但是,关于您的示例(<a href="tel:+33(0)...
),我将避免使用您提供的格式,即:
[country code]([substituted leading 0 for domestic callers])[area code][phone number]
虽然我无法找到有关浏览器如何处理此类情况的权威指南,但我想您会发现,正如@DigitalJedi指出的那样,某些(也许是全部?)浏览器会去除括号并保留其中的数字,导致数字不正确。
例如
<a href="tel:+33(0)1234567890">+33 (0) 123 456 7890</a>
将/可能导致致电+3301234567890。这仍然有效吗?也许?我们现在正在进入电话号码路由领域。
某些浏览器/设备可能很聪明,足以找出目的并进行相应的调整,但是我会放心地使用它,而只需使用:
[country code][area code][phone number]
例如
<a href="tel:+331234567890">+33 (0) 123 456 7890</a>
(我知道)让您的本地用户拨打国际国家代码没有任何弊端-产生的效果就好像该用户省略了该代码并替换了前导零。
以下是一些有关浏览器处理电话链接的半相关有用信息:https://css-tricks.com/the-current-state-of-telephone-links/
答案 1 :(得分:0)
()
属性中的href
应该没有问题:(基于href)
http://example.com/test(1).html
但是,如果我执行a href="tel:+000 (1) 000 000"
,则在点击手机上的链接后,手机上的拨号盘将显示+0001000000
这已在Andorid设备上经过测试并确认 < / p>
这意味着括号和空格都将被删除。
但是由于手机上的操作系统不同,这可能仍然会有所不同。
P.S。
如果您认为电话号码中的+
是一个问题... 我也对此进行了测试,而+
则没有任何意外行为。
答案 2 :(得分:0)
我阅读并记住正确的格式应为: +33.1 23 45 67 89 但是我找不到哪里。