【问题标题】:HTML checking - Website not valid when using tel inside hrefHTML 检查 - 在 href 中使用 tel 时网站无效
【发布时间】:2015-08-07 20:33:11
【问题描述】:

所以当我尝试验证它时出现此错误here

元素 a 上的属性 href 的错误值 tel:0000 00 00 00:非法 方案数据中的字符:不是 URL 代码点

我的 html 看起来像这样:

<a href="tel:0000 00 00 00">0000 00 00 00</a>

有没有办法解决这个问题?

【问题讨论】:

    标签: html hyperlink w3c-validation tel


    【解决方案1】:

    去掉空格。 URL 中不允许使用文字空格,它们不是电话号码数据的一部分,只是为人类消费而格式化。

    【讨论】:

      【解决方案2】:

      假设验证器根据RFC 3966 中给出的语法检查 URL,它在空格字符上失败。删除这些,或用visual-separator 字符(例如-)替换它们,你应该没问题。

      例子:

      <a href="tel:0000-00-00-00">0000 00 00 00</a>
      

      Section 3 的规范有语法。特别是:

      phonedigit           = DIGIT / [ visual-separator ]
      visual-separator     = "-" / "." / "(" / ")"
      

      另见Section 5.1.1,它说

      尽管 ITU-T E.123 建议使用 空格字符作为印刷电话号码中的视觉分隔符, “tel” URI 不得在视觉分隔符中使用空格以避免 过度转义。

      【讨论】:

        【解决方案3】:

        不要使用超链接。使用微数据。手机会识别为电话号码并允许点击,但不会影响正常的网络浏览器。

        <div class="vcard">
        <div class="tel">
            12345555555
        </div>
        

        见:https://stackoverflow.com/a/13409099/3462988

        【讨论】:

        • 什么是“普通”网络浏览器?阅读 this other answer 到您的链接问题,了解为什么隐藏 URL 会危害用户。此外,验证者不太可能检查您的建议,因此不太容易发现错误(以及 Paul 最初是如何出现在这里的!)。
        猜你喜欢
        • 2023-03-26
        • 2019-10-25
        • 2014-07-25
        • 2013-05-24
        • 2019-04-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-05
        相关资源
        最近更新 更多