자바 스크립트에서 deviceorientation
이벤트를 사용하여 자이로 스코프 데이터를 검색하고 있습니다. 지금까지 완벽하게 작동하는 iOS 기기에서이를 테스트했습니다. 오늘 저는 Chrome 39를 실행하는 Microsoft Surface Pro 2 태블릿에서 동일한 코드를 시험해 보았습니다. 매우 이상한 값을 얻었습니다.Microsoft Surface Pro 2의 JavaScript 장치 방향 : 알파와 감마 값을 전환했습니다.
조금만 살펴보면 this page에서 테스트 할 때 알 수 있듯이 알파와 감마 값이 Surface Pro에서 전환 된 것으로 보입니다.
테이블에 평평하게 놓고 장치를 돌리면 Surface Air가 감마값을 변경하는 동안 iPad Air의 알파 값이 변경됩니다. 장치를 집을 때 (테이블에 90도 각도로 서 있기 때문에) iPad에서 90의 감마 값과 Surface Pro에서 90의 알파 값을 얻습니다.
이러한 이벤트가 어떻게 작동해야하는지에 대한 HTML5Rocks의 설명에 따르면 iPad는 올바른 작업을 수행하지만 Surface Pro는 그렇지 않습니다.
제 질문은 다음과 같습니다. 알려진 문제입니까? 이 문제를 감지하거나 해결할 방법이 있습니까?
해결 과정 : 나는 현재이를 위해 다음과 같은 해결 방법을 사용하고
:
var alphaGammaFlipped = false;
window.addEventListener("deviceorientation", function(e) {
if (e.alpha < 0 || e.gamma > 180) alphaGammaFlipped = true;
var alpha = e.alpha;
var beta = e.beta;
var gamma = e.gamma;
if (alphaGammaFlipped) {
var temp = alpha;
alpha = gamma;
gamma = temp;
}
// Do something with alpha, beta, gamma...
});
이 코드는 -180 사이 여야 알파는 0과 360 및 감마 사이 여야한다는 가정을 사용합니다 그 중 하나가 범위를 벗어난다면 이것은 아마 뒤집 혔을 것입니다. 분명히 이것은 단지 해결 방법 일 뿐이며 값은 0과 180 사이에 머물러있는 한 잘못 될 것입니다. 누군가 더 좋은 점이 있다면 기쁠 것입니다.
확실하지 (나는 ... 인터넷 익스플로러 11에는 반전이 없었 것으로 나타났습니다) iOS에서 안드로이드까지 ... – dandavis
내가 말할 수는 없지만 근처에 안드로이드 장치가 없지만 다음 주에 테스트하고 다시보고 할 수 있습니다. – BlackWolf