2013-02-08 2 views
1

내 JS에서 검사를 실행하는 데 Modernizr.mq (http://modernizr.com/docs/#mq)을 사용하고 있는데 Respond polyfill은 IE 8이 IE 8에서 미디어를 지원하지 않으므로 IE 8에서 작동한다는 인상하에있었습니다. 쿼리 그러나 이것은 사실이 아니다는, IE 8이 테스트 페이지를 참조하십시오 : http://goo.gl/ND9sA을의 BG는이에 따라 주황색해야한다 : 단지 CSS 내에서 지정되지 미디어 쿼리에 대한 에 응답Modernizr.mq가 IE 8에서 작동 중임

if (Modernizr.mq('screen and (min-width: 650px)')) { 
    $('body').css('background', 'orange'); 
} 

그래서 않습니다 JS? 나는 Modernizr.mqmatchMedia을 사용한다고 생각했다.matchmediapolyfill을 포함하지만 여전히 작동하지 않는다.

그래서 어떻게 IE 8에 대해 Modernizr.mq이 작동합니까? 그렇지 않습니까?

답변

0

polyfills를로드하면 Modernizr은 테스트 값을 변경하지 않으므로 브라우저가 미디어 쿼리를 지원하지 않으면 Modernizr.mq()false을 반환하고 Respondjs polyfill을 추가하면 변경되지 않습니다.

죄송합니다.

polyfill이로드 된 경우 이전 브라우저 (Respondjs는 IE6/7/8을 지원할 수 있습니다)를 모두 수행 할 수 있으므로 더 많은 양을 얻을 수는 없습니다 Modernizr 플래그와 함께. 이론적으로 모든 브라우저가이 기능을 지원해야하므로 이론적으로 Polyfill을 사용하여 Modernizr 테스트를 사용할 필요가 없습니다.

+0

의견에 감사드립니다. 예 ** 나는 이전 IE (8 이하)에 대해 ** Respond ** 만 사용하여 JS에서 'Modernizr.mq'를 통해 내 JS에서 미디어 쿼리 지원을 해결할 것이라고 생각했지만 그 말은 무의미합니다. 그래서 저는 돌아 왔습니다. 뷰포트 너비를 확인하는 방법은'document.body.clientWidth'입니다. 내 CSS의 경우 Sass를 사용하므로 이전 IE 미디어 쿼리 지원에이 훌륭한 기술을 사용할 수 있습니다. http://jakearchibald.github.com/sass-ie/. –