2011-06-22 10 views
5

mam przeksięgowanie pytanie cudzego znalazłem na Google Groups, mam podobny problem:Phonegap - Zapobieganie obrotom przy włączonej automatycznej orientacji?


mam aplikację, która wymaga, żeby wszystko było w portret, z wyjątkiem, gdy gra wideo. W systemie iOS, gdy odtwarzanie wideo jest przekazywane do odtwarzacza Quicktime, chcę, aby wideo można było odtwarzać w trybie poziomym. Obecnie wideo jest odtwarzane tylko w trybie portretowym, ponieważ wygląda na to, że dziedziczy portret - tylko z aplikacji phonegap. Moim rozwiązaniem może być zmiana Phonegap.plist na Auto rotate, ale wtedy chciałbym móc używać javascript, aby wychwycić zmiany rotacji i zapobiec ich na każdej stronie aplikacji, z wyjątkiem odtwarzania wideo. Czy to brzmi wykonalne? Czy istnieje inny sposób na wymuszenie orientacji poziomej tylko dla określonej strony aplikacji? Dzięki!


próbowałem następujących z Auto-obracanie jest włączona, bez powodzenia:

$(document).ready(function(){ 
    document.addEventListener('orientationchange', function(e) { e.preventDefault(); }, false); 
}); 
+0

Czy możesz bardziej szczegółowo opisać swój kontekst? Widzę iPhone'a, JavaScript, Androida, nie wiem nawet, na jakiej platformie się powołujesz. –

+0

Domyślam się, że vincent pracuje z biblioteką Phonegap, gdzie będzie kodować raz i pobierać kompilacje dla IOS, Androida itp. (Które obsługuje Phonegap). –

+0

success_anil ma rację. Planuję zbudować na iPhone'a i Androida. Jednak na tym etapie wystarczyłoby tylko rozwiązanie dla iPhone'a. Używam HTML5, jQuery i jQtouch. – Vincent

Odpowiedz

2
$(window).bind("orientationchange", function(){ 
    var orientation = window.orientation; 
    var new_orientation = (orientation) ? 0 : 180 + orientation; 
    $('body').css({ 
     "-webkit-transform": "rotate(" + new_orientation + "deg)" 
    }); 
}); 

Jest to ryzykowne, ale uważa, że ​​jego sposób jedyny sposób ..

alternatywna można powiązać do zdarzenia zmiany wielkości okna.

$(window).bind("resize", function(){ 
    var orientation = window.orientation; 
    var new_orientation = (orientation) ? 0 : 180 + orientation; 
    $('body').css({ 
     "-webkit-transform": "rotate(" + new_orientation + "deg)" 
    }); 
}); 

pisałem ten mały skrypt jakiś czas temu: To naprawić pomnożyć zmiany rozmiaru zwrotnej błąd w iOS safari i nie-/późno-/ wczesnego spust (1) orientationChange błąd w android.

(1) Czasami nie uruchamia się czasami przed i kilka razy po zmianie szerokości i wysokości przeglądarki? Przewodowy!

if (!(/iphone|ipad/gi).test(navigator.appVersion)) { 
    $(window).unbind("resize").bind("resize", function() { 
     $(window).trigger("orientationchange"); 
    }); 
} 

Jeśli nie jesteś użytkownikiem iPhone lub iPad, uruchamiasz zdarzenie orientationchange w oknie.

Tak więc, gdy zwiążesz jakąkolwiek funkcję, zmiana rozmiaru, którą wykonujesz, spowoduje zmianę orientacji.

Zobacz: http://jsfiddle.net/aalouv/sABRQ/1/

+0

Jak włączyć to do swojego pliku? Czy to po prostu idzie w części JS mojego indeksu? Daj mi znać, dzięki! – nate8684

Powiązane problemy