2011-08-31 3 views
9

CSS 속성 pointer-events (see documentation)이 사용자의 브라우저에서 지원되는지 여부를 확인하고 싶습니다.CSS 속성이 지원되는지 여부를 JS에 체크인 하시겠습니까?

현재 예를 들어 Opera에서 지원하지 않으며 IE의 일부 버전을 사용합니다.

자바 스크립트로 체크를 실행하고 지원 여부에 따라 적절한 HTML 비트를 표시하고 싶습니다.

사용자 에이전트 문자열을 검사하는 것보다 더 나은 방법이 있습니까?

+1

일반적으로 사용자 에이전트가 무엇인지 확인하고 무엇이 지원되는지 또는 지원되지 않는지 확인합니다. – Endophage

+2

@Endophage : 일반적으로, 당신은 그렇게하지 않습니다. [기능 감지] (http://api.jquery.com/jQuery.support/)가 탁월한 접근 방식입니다. '포인터 이벤트 '의 경우에는 신뢰할 수있는 테스트가 없습니다. – thirtydot

+0

@thirtydot 기능 감지 기능은 두 가지 흥미로운 기능 만 있으면 충분합니다. 탐지 할 기능이 많다면, Modernizer의 모든 것을 말하면 비효율적입니다. – Endophage

답변

3

나는

if ("pointer-events" in document.body.style) 

또는

if ("pointerEvents" in document.body.style) 

이 SVG 콘텐츠의 경우에 적합해야합니다 생각합니다.

+4

IE9에서는 (http://jsfiddle.net/M27PT/) 아직 [의도대로 작동하지 않습니다.] (http://jsfiddle.net/7TvVY/10/) [true로 평가됩니다.] – Artyom

+0

@art 아마도 IE9가이 SVG 속성을 확장하지 않았기 때문입니다 (http://msdn.microsoft.com/en-us/library/ff972269 (v = vs.85) .aspx). – Knu

+0

파이어 폭스에서 다른 방법 인 것처럼 보입니다. 진술은 false를 반환하지만 CSS는 의도 한대로 작동합니다. – Artyom

2

다음 모두 IE 9, 파이어 폭스에서 true로 평가 : 비 SVG 콘텐츠에 대한

if ('pointerEvents' in document.documentElement.style) 
+0

그리고 오페라에서 확실히 HTML 속성으로 지원하지 않으므로 작동하지 않을 것 같습니다. – Richard

+0

이것은 대답이 아니지만 사실입니다. – taseenb

6

이 스크립트가 작동해야합니다
https://github.com/ausi/Feature-detection-technique-for-pointer-events

또한 모더 나이저없이 사용할 수 있습니다

var pointerEventsSupported = (function(){ 
    var element = document.createElement('x'), 
     documentElement = document.documentElement, 
     getComputedStyle = window.getComputedStyle, 
     supports; 
    if(!('pointerEvents' in element.style)){ 
     return false; 
    } 
    element.style.pointerEvents = 'auto'; 
    element.style.pointerEvents = 'x'; 
    documentElement.appendChild(element); 
    supports = getComputedStyle && 
     getComputedStyle(element, '').pointerEvents === 'auto'; 
    documentElement.removeChild(element); 
    return !!supports; 
})(); 
if(pointerEventsSupported){ 
    // do something 
} 
+0

Wonderful! 게시 해 주셔서 감사합니다. –

+0

@SerjSagan 그것은 또한 Modernizr non-core detect에도 포함되어 있습니다. Modernizr을 사용하려면 http://modernizr.com/download/로 이동하여 non-core detect에서 css-pointerevents를 활성화하십시오. – ausi

관련 문제