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

Vin*_*ent 5 iphone jquery android jqtouch cordova

我正在重新发布我在Google论坛上发现的其他人的问题,我遇到了类似的问题:


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


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

$(document).ready(function(){
  document.addEventListener('orientationchange', function(e) { e.preventDefault(); }, false);
});
Run Code Online (Sandbox Code Playgroud)

and*_*lrc 2

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

这是一种危险的方法,但认为这是唯一的方法。

您也可以绑定到窗口调整大小事件。

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

我不久前写了这个小脚本:它修复了 iOS safari 中的乘法调整大小回调错误和 android 中的非/延迟/早期触发(1)方向更改错误。

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

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

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

因此,当您绑定任何调整大小的函数时,它会抛出方向变化。

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