[javascript] jQuery를 사용하여 장치가 전화를 걸 수 있는지 여부를 감지합니다 ( "tel : //"프로토콜 지원).


Answers

나는 tel link로 non link element를 강화하기 전에 다음과 같은 것을 사용하여 PROBABLY 전화를 탐지한다 :

var probablyPhone = (
    (/iphone|android|ie|blackberry|fennec/).test
     (navigator.userAgent.toLowerCase())
     && 'ontouchstart' in document.documentElement
  );

나는 그들이 전화가 아니라는 것을 알고 있기 때문에 ipad | ipad를 제외시켰다.

여기서 중요한 점은 PROBABLY 물론 일부 타블렛 디바이스는 사실이지만, 폰용이 아닌 터치 디바이스에서 내 목적을 달성하기에 충분할 것입니다. 링크는 어쨌든 실패 할 것입니다. 따라서 데스크톱을 제외시키고 터치 이벤트를 감지하고 싶습니다. 나는 또한 장치 너비를 검사하여 좁혀 버렸지 만 궁극적으로 내가 찾은 전화를 걸 수있는 모바일 장치를 감지 할 수있는 확실한 방법이 없다고 생각합니다.

Question

내 웹 사이트에는 다음과 같은 몇 가지 링크가 있습니다.

<a href="tel://+12181112222" class="call">218.111.2222</a>

jQuery (또는 다른 메소드)를 사용하여 장치가 tel : // 프로토콜을 사용하여 호출을 지원하는지 여부를 확인하려고합니다. 그런 방법이 세상에 존재합니까?

데스크톱에서 클릭 할 때 프로토콜 (tel)이 어떤 프로그램과도 연결되어 있지 않기 때문에 "Firefox는이 주소를 여는 방법을 모릅니다"와 같은 페이지로 이동하기 때문에 링크를 활성화하거나 비활성화하는 데 몇 가지 방법을 사용하고 싶습니다. "

현재 사용자 에이전트를 스니핑하여 모바일 장치인지 여부를 감지하고 있습니다. 그러나 더 나은 / 정확한 방법이 있습니까? jQuery의 $.support.xx 와 같은 것?

if ( (/iPhone|iPod|iPad|Android|BlackBerry/).test(navigator.userAgent) != true ){
    $(".call").attr("href", "#");
}



일부 제한된 솔루션은 일부 순수한 휴대폰을 탐지하는 방법 일 수 있습니다. 그러나 모든 가능한 것은 아닙니다 :

(function(a) {
	window.isPhone = /\bi?Phone\b|(?=.*\bAndroid\b)(?=.*\bMobile\b)|(?=.*\bAndroid\b)(?=.*\bSD4930UR\b)/i.test(a);
})(navigator.userAgent || navigator.vendor || window.opera);

console.info('This device %s make phone calls', window.isPhone ? 'is originally intended to' : 'probably can\'t' );




Links