2015-07-02 20 views
13

Próbuję wykryć orientację urządzenia na mojej stronie.początkowe okno.orientacja zawsze 0 na Windows Phone

Wartość orientacji wydaje się być w porządku po wydarzeniu orientationchange.

$(window).on("orientationchange",function(event){alert(window.orientation);}) 

Problemem jest początkowa wartość window.orientation przy uruchomieniu strony, która zawsze wynosi 0, nawet gdy urządzenie znajduje się w pozycji poziomej.

$(document).ready(function(){alert(window.orientation);}); 

Nie zmienia to jednak po pewnym opóźnieniem (Sprawdziłem to) zmienia wartości prawego dopiero po orientationchange imprezy.

Czy istnieje sposób na uzyskanie właściwej orientacji przy uruchamianiu strony?

Odpowiedz

1

Wygląda na to, że nieruchomość nie jest obsługiwana w rzeczywistości niczym innym niż Chrome na Androida: https://developer.mozilla.org/en-US/docs/Web/API/Screen/orientation

W zależności od tego, co to jest chcesz zrobić, można użyć CSS?

@media only screen and (max-width: 999px) { 
    /* rules that only apply for canvases narrower than 1000px */ 
} 

@media only screen and (device-width: 768px) and (orientation: landscape) { 
    /* rules for iPad in landscape orientation */ 
} 

@media only screen and (min-device-width: 320px) and (max-device-width: 480px) { 
    /* iPhone, Android rules here */ 
} 
+0

Jest obsługiwany w systemie Windows Phone - kiedy wykonuję obrót, wartość orientacji jest prawidłowa, problem występuje przed każdym obróceniem urządzenia. Nie mogę używać reguł CSS, ponieważ odnoszą się one do wymiarów ekranu, a nie do wartości window.orientation, która może być różna dla niektórych urządzeń, nawet jeśli oba są w pozycji poziomej, np. http://pioul.fr/cross-device-cross-browser-portret-landscape-detection –

+0

@pawlakppp jeśli rzeczywiście czytasz artykuł, który sam łączysz, stwierdza, że ​​nie należy ufać window.orientation, a także podaje przykłady jak różne przeglądarki dają różne wyniki w tych samych sytuacjach – Siada

+0

nie należy ufać, jeśli chcesz uzyskać pozycję landscape/portrati w oparciu o window.orientation. Nie chcę tego. Używam wartości akcelerometru z javascript i używam względnych wartości x lub y Przyspieszanie w oparciu o window.orientation. To dlatego potrzebuję tego. –

0

próbowałeś zbliża ten problem tak:

$(document).ready(function(){ 
    $(window).load(function(){ 
     alert(window.orientation); 
    }); 
}); 

alternatywnie można uzyskać orientację urządzenia ręcznie:

$(document).ready(function(){ 
    alert((($(window).width()>$(window).height()) ? 90 : 0)); 
}); 
+0

Tak, próbowałem podobnych podejść, ale to się wcale nie zmienia. Nie mogę uzyskać orientacji ręcznie, ponieważ niektóre urządzenia mają orientację = 0, gdy window.width jest wyższa niż window.height - np. Galaxy Tab (http://pioul.fr/cross-device-cross-browser-portret-landscape-detection) –

0

Właśnie testowałem go na Windows Phone i tam to działa. Z jakiego telefonu/os/przeglądarki korzystasz?

+0

WP 8.1, przeglądarka jest standardem IE. Czy możesz otworzyć ten JSBin: https://output.jsbin.com/guvixu w pozycji poziomej i jaka wartość będzie wyświetlana? –

+0

Witam, wyświetla 90 ... Mam nadzieję, że pomaga .. –