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


Answers

하나는 href의 첫 번째 인스턴스를 tel : //로 찾고 아약스 호출을 게시 할 수 있습니다. 성공한 경우 readyState가 1이어야하므로 아무 작업도 수행하지 않습니다. 실패하면 tel : //로 모든 hrefs를 찾고 inner html을 잡고 태그를 바꿉니다.

이것은 가설과 테스트되지 않은 것입니다.

또 다른 생각은 대부분의 브라우저가 전화 번호 형식 문자열에 대한 사용자 정의 지원을 가지고 있기 때문에 전화 번호에 입력하면 자동으로 수행해야하는 태그를 만들지 않아도됩니다.

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' );