簡體   English   中英

在 HTML 中使用帶有 "href=tel:" 的括號

[英]Use of Parentheses in HTML with "href=tel:"

很驚訝我在網上的任何地方都找不到關於這個的明確答案:我正在用法語設置一個翻譯的 HTML 頁面,其中有一個以“+33 (0)”開頭的不同聯系電話。 由於我無法在這個數字上親自測試它 - 一個規范的問題:我可以使用以<a href="tel:+33(0)..."開頭的錨標簽,即在括號中包含一個數字剩下的數字在后面並且鏈接有效嗎?

好問題。 找到關於href="tel:"的明確、權威的答案是很困難的。

RFC 3986(第 2.2 節)將括號定義為“保留的子分隔符”。 這意味着它們在 URL 的某些部分使用時可能具有特殊含義。 RFC 說:

URI 生成應用程序應該對與保留集中的字符對應的數據八位字節進行百分比編碼,除非URI 方案明確允許這些字符表示該組件中的數據。 如果在 URI 組件中發現保留字符,並且該字符沒有已知的定界角色,則必須將其解釋為表示與該字符在 US-ASCII 中的編碼相對應的數據八位字節。

(強調我的)

基本上,您可以在 URL 中使用US-ASCII 字符集中的任何字符。 但是,在某些情況下,括號是為特定用途保留的,在這些情況下,它們應該進行百分比編碼。 否則,它們可以保持原樣。

所以,是的,您可以在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/

href屬性中的()應該沒有問題:(href-wise)

http://example.com/test(1).html

但是,如果我執行a href="tel:+000 (1) 000 000" ,單擊手機上的鏈接后,手機上的撥號將顯示+0001000000這是在 Android 設備上測試和確認的

這意味着刪除括號以及空格。

但這仍然可能因手機上的不同操作系統而有所不同。

PS:

如果您認為您的號碼中的+有問題...我也對此進行了測試,並且+沒有任何意外行為。

更多: href="tel:" 和手機號碼

我閱讀並記住正確的格式應該是:+33.1 23 45 67 89 但我找不到來自哪里。

根據ITU-T E.123 Section 7.2 括號的使用

( ) 不應用於國際號碼。

所以(0)根本不應該包括在內。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM