현재 웹 사이트에서 모바일 장치 감지 용 JavaScript를 사용하고 있습니다. 그러면 모바일 또는 데스크톱 사용자를 위해 다른 콘텐츠를 제공 할 수 있습니다.픽셀 비율/밀도를 감지하는 모범 사례는 무엇입니까?
var isMobileScreenWidth = ((screen.width/window.devicePixelRatio) < 768)
768px
우리가 모바일 또는 데스크톱 그래서 767과 같습니다 정의되는 지점입니다 : 모바일 장치 또는 아니라면, 그래서 같은 사용자가 경우
현재는 내가 해결해야 window.devicePixelRatio
및 screen.width
를 사용 모바일 및 768 이상은 데스크톱입니다. 그래서,
이 완벽하게 작동하지만, 최근 파이어 폭스와는 window.devicePixelRatio
변경에서 확대 된 파이어 폭스,에 문제가 가로 질러 온 :
zoom = 30%, window.devicePixelRatio = 0.3
zoom = 100%, window.devicePixelRatio = 1.0
zoom = 300%, window.devicePixelRatio = 3.0
이 지금 나에게 문제를 일으키는 모든 사용자있는 때문에 그들의 브라우저가 파이어 폭스에서 확대되어 사이트의 모바일 버전을 얻게하십시오.
다른 사람들이 데스크탑 브라우저와 별개의 픽셀 밀도를 얻는 다른 방법을 알고 있는지 궁금합니다.
사용자 에이전트 감지 기능을 약간 사용하지만 끊임없이 변화하는 모바일 사용자 에이전트 목록을 따라 잡는 것은 대단한 일이기 때문에 화면 해상도와 사용자 모두에 의존 할 수 없습니다. 동시에 에이전트.
누구든지 이에 대한 아이디어가 있다면 도움이 될 것입니다.
UPDATE :
난 그냥이 건너왔다 : 수학이 빠른 비트가이 게시물에 제안
window.screen.availWidth/document.documentElement.clientWidth
는 :
window.devicePixelRatio does not work in IE 10 Mobile?
나는 그것을 테스트 한 Firefox에서 작동하고 문제를 해결하지만 불행히도 Chrome에서 문제가 발생하므로
Chrome zoom = 100%,
window.devicePixelRatio = 1.0,
window.screen.availWidth/document.documentElement.clientWidth = 3.0
모든 것을 위해 작동하는 견고한 솔루션을 찾을 수없는 것 같습니다.
당신은 모바일을 확인하기 위해 장치 픽셀 비율을 사용해서는 안됩니다 : 일부 비 모바일 장치는 "망막"(iPad, 맥북 프로 ...) 모바일 스타일을 표시합니다. HD 이미지에만 사용하십시오. –
@ Yukulélé 귀하의 우려를 참조하십시오. 이것이 내가'screen.width'를'window.devicePixelRatio'로 나누었고, 그 결과가'768px' (iPad의 너비)보다 작은지를 확인하는 이유입니다. 그렇게하면 대부분의 태블릿 기기가 모바일 스타일을 보지 못하게됩니다. Kindle Fire와 같은 일부 태블릿 기기는 소형 태블릿이기 때문에 모바일 스타일을 보여 주었지만, 모바일 스타일이 이러한 장치에서 상당히 잘 표현 되었기 때문에 나는 이것을 고려하지 않았습니다. – lukehillonline