기능 탐지(웹 개발)
Feature detection (web development)기능검출(Feature Detection, 또한 기능시험)은 런타임 환경(일반적으로 웹 브라우저 또는 사용자 에이전트) 간의 차이를 처리하기 위해 웹 개발에 사용되는 기법으로, 환경이 특정한 기능을 제공할 수도 있고 제공하지 않을 수도 있다는 단서를 프로그래밍 방식으로 시험한다.그런 다음 이 정보는 특정 API를 사용하거나 더 나은 사용자 환경에 맞게 맞춤화하는 등 환경에 맞게 애플리케이션을 적응시키는 데 사용된다.[citation needed]
그것의 지지자들은 그것이 사용자 에이전트 스니핑과 브라우저별 CSS 해킹과 같은 다른 기술보다 더 신뢰할 수 있고 미래에 대비할 수 있다고 주장한다.[citation needed]
기술
기능 테스트는 여러 형태를 취할 수 있다.그것은 본질적으로 필요한 기능이 실제로 지원된다는 어느 정도의 확신을 주는 코드 조각이다.그러나 다른 기법과는 대조적으로 형상 검출은 대개 경험적 접근보다는 탐지할 형상과 직접 관련된 작용 수행에 초점을 맞춘다.[citation needed]
자바스크립트는 웹브라우저에서[citation needed] 가장 보편적인 스크립팅 언어인 만큼, 많은 피쳐 검출 기법이 자바스크립트를 사용하여 DOM과 로컬 자바스크립트 환경을 검사한다.
가장 간단한 기법은 관련 물체나 성질의 존재를 확인하는 것이다.예를 들어 Geolocation API(Geolocation API는 지리적 위치에 대한 장치의 정보에 액세스하는 데 사용되며, GPS 네비게이션 장치에서 얻을 수 있음)는 다음을 노출한다.geolocation
의 소유물.navigator
DOM에 있는 개체. Geolocation API가 지원됨을 암시하는 개체:
if ('Geolocation' in Navigator) { // Geolocation API가 지원되는 경우 }
더 높은 수준의 신뢰도를 위해 일부 형상 테스트는 형상을 호출한 후 그것이 적절하게 작용했다는 단서를 찾을 것이다.예를 들어 쿠키 지원을 위한 테스트는 값을 쿠키로 설정한 다음 다시 읽을 수 있는지 확인할 수 있다.
탐지불능
일부 브라우저 기능은 기능이 지원된다는 충분한 확신이 없는 것으로 알려져 있기 때문에 탐지할 수 없는 것으로 간주된다.이것들은 종종 브라우저의 자바스크립트 환경에 이용할 수 있는 정보가 제한되어 있기 때문이다; 일반적으로 JavaScript를 사용하여 탐지되기 위해서는 어떤 방법으로든 DOM을 통해 기능이 노출되어야 한다.
검출되지 않은 물체와 마주쳤을 때 대체 메커니즘으로 사용자 에이전트 스니핑에 의존하거나, 기능이 지원되지 않는 것으로 판명될 경우 충격을 최소화하기 위해 방어 코딩을 채택하는 것이 일반적이다.
모모니즈르 프로젝트는 그들의 위키에서 발견되지 않은 것으로 알려진 기록을 유지하고 있다.