在 HTML 和 "href=tel:" 中使用括号
Use of Parentheses in HTML with "href=tel:"
很惊讶我无法在网上的任何地方找到关于此问题的明确答案:我正在设置翻译成法语的 HTML 页面,其中包含以“+33 (0)”开头的不同联系电话。因为我不能在这个数字上亲自测试它 - 一个典型的问题:我可以摆脱以 <a href="tel:+33(0)..."
开头的锚标记,即括号中包含一个数字,其余数字紧随其后,并具有 link工作?
href
属性中的()
应该问题不大:(href-wise)
http://example.com/test(1).html
但是,如果我这样做 a href="tel:+000 (1) 000 000"
,在 phone 上单击 link 后,phone 上的表盘将显示 +0001000000
这是在Android设备
上测试和确认的
这意味着括号和空格都被删除了。
但由于 phone 上的 OS 不同,这仍然会有所不同。
P.S.:
如果你觉得你号码中的+
有问题...我也测试过这个,+
没有任何问题意外行为。
更多:href="tel:" and mobile numbers
好问题。找到关于 href="tel:"
的明确、权威的答案特别困难。
RFC 3986 (Section 2.2)定义括号为"reserved sub-delims"。这意味着它们 可能 在 URL 的某些部分使用时具有特殊含义。 RFC 说:
URI producing applications should percent-encode data octets that
correspond to characters in the reserved set unless these characters
are specifically allowed by the URI scheme to represent data in that
component. If a reserved character is found in a URI component and
no delimiting role is known for that character, then it must be
interpreted as representing the data octet corresponding to that
character's encoding in 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>
will/may 导致呼叫 +3301234567890。这仍然有效吗?可能是?我们现在进入 phone 号码路由区域。
有些 browsers/devices 可能足够聪明,能够弄清楚意图并相应地进行调整,但我会谨慎行事,而只是简单地使用:
[country code][area code][phone number]
例如
<a href="tel:+331234567890">+33 (0) 123 456 7890</a>
让您的本地用户拨打国际国家代码没有任何缺点(据我所知)- 结果与省略它并替换前导零的结果相同。
这里有一些关于浏览器处理 telephone 链接的半相关的有用信息:https://css-tricks.com/the-current-state-of-telephone-links/
我看过并记得正确的格式应该是:
+33.1 23 45 67 89
但是我找不到出处。
根据ITU-T E.123第 7.2 节括号的使用
The ( ) should not be used in an international number.
所以 (0)
根本不应该包括在内。
很惊讶我无法在网上的任何地方找到关于此问题的明确答案:我正在设置翻译成法语的 HTML 页面,其中包含以“+33 (0)”开头的不同联系电话。因为我不能在这个数字上亲自测试它 - 一个典型的问题:我可以摆脱以 <a href="tel:+33(0)..."
开头的锚标记,即括号中包含一个数字,其余数字紧随其后,并具有 link工作?
href
属性中的()
应该问题不大:(href-wise)
http://example.com/test(1).html
但是,如果我这样做 a href="tel:+000 (1) 000 000"
,在 phone 上单击 link 后,phone 上的表盘将显示 +0001000000
这是在Android设备
这意味着括号和空格都被删除了。
但由于 phone 上的 OS 不同,这仍然会有所不同。
P.S.:
如果你觉得你号码中的+
有问题...我也测试过这个,+
没有任何问题意外行为。
更多:href="tel:" and mobile numbers
好问题。找到关于 href="tel:"
的明确、权威的答案特别困难。
RFC 3986 (Section 2.2)定义括号为"reserved sub-delims"。这意味着它们 可能 在 URL 的某些部分使用时具有特殊含义。 RFC 说:
URI producing applications should percent-encode data octets that correspond to characters in the reserved set unless these characters are specifically allowed by the URI scheme to represent data in that component. If a reserved character is found in a URI component and no delimiting role is known for that character, then it must be interpreted as representing the data octet corresponding to that character's encoding in 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>
will/may 导致呼叫 +3301234567890。这仍然有效吗?可能是?我们现在进入 phone 号码路由区域。
有些 browsers/devices 可能足够聪明,能够弄清楚意图并相应地进行调整,但我会谨慎行事,而只是简单地使用:
[country code][area code][phone number]
例如
<a href="tel:+331234567890">+33 (0) 123 456 7890</a>
让您的本地用户拨打国际国家代码没有任何缺点(据我所知)- 结果与省略它并替换前导零的结果相同。
这里有一些关于浏览器处理 telephone 链接的半相关的有用信息:https://css-tricks.com/the-current-state-of-telephone-links/
我看过并记得正确的格式应该是: +33.1 23 45 67 89 但是我找不到出处。
根据ITU-T E.123第 7.2 节括号的使用
The ( ) should not be used in an international number.
所以 (0)
根本不应该包括在内。