2011-06-22 29 views
5

Tôi reposting câu hỏi của người khác tôi tìm thấy trên nhóm Google, Tôi đang gặp một vấn đề tương tự:Phonegap - Ngăn chặn xoay trong khi vẫn có tự động định hướng được bật?


Tôi có một ứng dụng đòi hỏi mọi thứ phải theo chiều Dọc, trừ khi nó đóng một video. Trên iOS, khi phát lại video được chuyển tới trình phát Quicktime, tôi muốn video có thể phát ở chế độ ngang. Hiện tại, video chỉ phát ở chế độ Chân dung, vì video dường như kế thừa chân dung - chỉ từ ứng dụng Phonegap. Giải pháp của tôi có thể thay đổi Phonegap.plist thành Tự động xoay, nhưng sau đó tôi muốn có thể sử dụng javascript để bắt các thay đổi xoay và ngăn chúng trong mọi trang của ứng dụng ngoại trừ phát lại Video. Điều này nghe có khả thi không? Có cách nào khác để bắt buộc Định hướng phong cảnh chỉ dành cho một trang cụ thể của ứng dụng không? Cảm ơn!


Tôi đã thử các sau đây với Auto xoay được kích hoạt, nhưng không thành công:

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

Bạn có thể cụ thể hơn về ngữ cảnh của mình không? Im thấy iPhone, JavaScript, Android, không thực sự chắc chắn ngay cả nền tảng bạn đang đề cập đến. –

+0

Tôi đoán .. vincent đang làm việc với Phonegap lib nơi anh ấy sẽ viết mã một lần và nhận các bản dựng cho IOS, Android v.v. (mà Phonegap hỗ trợ). –

+0

success_anil là đúng. Tôi đang lên kế hoạch xây dựng cho iPhone và Android. Tuy nhiên, ở giai đoạn này, chỉ một giải pháp duy nhất của iPhone là đủ. Tôi đang sử dụng HTML5, jQuery và jQtouch. – Vincent

Trả lời

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

Đây là một cách nguy hiểm nhưng cho rằng cách duy nhất của nó ..

Alternative bạn có thể ràng buộc đến sự kiện thay đổi kích thước cửa sổ.

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

tôi đã viết kịch bản này ít một thời gian trước: Nó sửa chữa các lỗi callback nhân thay đổi kích thước trong iOS safari và các phi/late-/sớm kích hoạt (1) orientationchange lỗi trong Android.

(1) Đôi khi thỉnh thoảng nó không kích hoạt trước và một số lần sau khi trình duyệt thay đổi chiều rộng + chiều cao? Có dây!

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

Nếu không phải iphone hoặc ipad bạn đang kích hoạt sự kiện orientationchange trên cửa sổ.

Vì vậy, khi bạn sẽ ràng buộc bất kỳ chức năng nào, việc thay đổi kích thước bạn thực hiện điều đó sẽ ném orientationchange.

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

+0

Làm cách nào để kết hợp điều này vào tệp của bạn? Điều này chỉ cần đi trong phần JS của tập tin chỉ mục của tôi? Cho tôi biết cám ơn! – nate8684

Các vấn đề liên quan