17

I want to add this code to make the contact details on my website automatically jump into a mobile dialpad/address book when clicked:

<a href="tel:12345555555">Call Us Now</a>

How can I make it appear as plain text for non-telephone devices (computers, tablets, laptops) so that it doesn't return a 404 error and cannot be clicked?

Happy to use any combination of HTML/CSS/JS to achieve this.

Dom
  • 2,275
  • 3
  • 24
  • 34

4 Answers4

42

Don't use a hyperlink. Use microdata. Mobile phones will recognize that it is a phone number and allow it to be clicked but it won't affect normal web browsers.

<div class="vcard">
    <div class="tel">
        12345555555
    </div>
</div>
John Conde
  • 217,595
  • 99
  • 455
  • 496
14

This might not directly answer the question, but I'd challenge your assumption that you need to hide call links on other devices.

Why?

  • Non-phone devices can still make calls. For example, a PC with a VoIP client can handle tel: links.
  • Tablets (iPad and Android) handle tel: links by allowing the user to add the number to their contacts, which would undoubtedly be synced to their phone – a nice convenience for your users.
  • Relying on automatic format detection is a hack.

So just leave it as a regular link. Maybe make it obvious by linking the phone number, so that someone on a desktop with no telephony software will understand that nothing will happen when they click it.

Call Us Now at <a href="tel:12345555555">(234) 555-5555</a>

Also, remember that a tel: link won't result in a 404 error since a HTTP request is never generated. On my machine with no tel: handler, Chrome simply does nothing, IE9 says "Some content or files on this webpage require a program that you don't have installed." (reasonable), and Firefox says "Firefox doesn't know how to open this address, because the protocol (tel) isn't associated with any program." (also reasonable).

When I was faced with this problem, I decided that the benefits of just leaving in tel: links outweighed any downsides or messy alternatives.

josh3736
  • 139,160
  • 33
  • 216
  • 263
  • This is a good answer, with some great food for thought, upvoted, will accept an answer once I have researched some more and made a decision. Thanks for input. – Dom Nov 16 '12 at 01:59
  • 3
    Putting links all over your page that link to error pages on unsupported devices seems like bad UX design. This is why you'd want to hide call links on unsupported devices. – tmsimont Mar 13 '14 at 15:18
  • Linking the number is recommended by RFC 3966, too - and is essential on hard-copy printouts (arguably an extreme case of something that doesn't support following `tel:` URLs). – Toby Speight Aug 07 '15 at 09:49
3

I am using the below CSS with Media Queries to reach this.

@media screen and (min-width: 768px) {
    a[href*="tel:"] {
        cursor:default;
    }
}

It is based on this question

Marcio Mazzucato
  • 8,841
  • 9
  • 64
  • 79
0

I had the same problem and started using the meta tag for format detection:

<meta name="format-detection" content="telephone=no" />

per this discussion with the same problem: Disable telephone number detection on iPad desktop web links?

Community
  • 1
  • 1
  • 5
    This approach would also disable phone number detection on phones, which we don't want in this case. – josh3736 Nov 16 '12 at 01:49