Phonegap – 在启用自动定位的同时防止旋转?

我正在重新发布我在Google群组中发现的其他问题,我遇到了类似的问题:


我有一个应用程序需要一切都在纵向,除了它播放video。 在iOS上,当video播放传递给Quicktime播放器时,我希望能够以横向模式播放video。 目前,video仅在Portrait中播放,因为它似乎只是从phonegap应用程序inheritance了肖像。 我的解决方案可能是将Phonegap.plist更改为自动旋转,但之后我希望能够使用javascript来捕获旋转更改并在应用的每个页面中阻止它们,但video播放除外。 这听起来可行吗? 是否有另一种方法可以强制横向定位仅针对应用程序的特定页面? 谢谢!


我在启用自动旋转时尝试了以下操作,但没有成功:

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

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

这是一种冒险的方式,但认为这是唯一的方法..

您可以选择绑定到窗口resize事件。

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

我刚才写了这个小脚本:它修复了iOS safari中的multiply resize回调错误以及android中的非/ late- / early-trigger(1)orientationchange错误。

(1)有时它在浏览器更改宽度+高度之前有时不会触发? 有线!

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

如果不是iphone或ipad,则触发窗口上的orientationchange事件。

因此,当您将绑定任何函数时,您执行resize会抛出orientationchange。

请参阅: http : //jsfiddle.net/aalouv/sABRQ/1/