是否可以防止iPhone / iPad在浏览器中的方向发生变化?

时间:2010-05-05 11:23:48

标签: iphone ipad webkit rotation orientation

我在这个问题上看到了类似的问题,但它们与本机应用程序有关。 我为在浏览器中运行的iPhone / iPad构建了Web应用程序(Safari)。

我想知道是否有办法阻止浏览器中的方向更改,可能是通过某个元标记。 我知道视口元标记允许您指定缩放和缩放功能,因此可能会有类似的方向。

我怀疑这是可能的,但我想我只是在这里提出问题。

6 个答案:

答案 0 :(得分:5)

是的,你可以。

使用Javascript:

/*window.orientation returns a value that indicates whether iPhone is in portrait mode,    landscape mode*/
window.onorientationchange = function() {
var orientation = window.orientation;

switch(orientation) {
    case 0:
         //Portrait mode
    case 90: 
         // Landscape left
    case -90:
         //Landscape right
}

它写在iPhone文档的某个地方,但我找不到它:)。

<强>更新
Here from iPhone docs

答案 1 :(得分:3)

似乎无法阻止方向更改,但您可以使用上述代码检测它。

如果您想阻止方向更改,则看起来好像您需要使用WebKit构建本机应用程序,这会取消事件。

答案 2 :(得分:1)

你可能真的很棘手并且旋转网站的主体以抵消方向改变,如果没有其他工作......

答案 3 :(得分:0)

为什么你不能只在函数内放一个event.preventDefault()

答案 4 :(得分:0)

你无法阻止它,但你可以根据ipad的方向改变身体的方向。

使用medopal的答案来检测方向并改变身体的方向。

例如:

document.getElementsByTagName("body")[0].style.webkitTransform = "rotate(-90deg)";

答案 5 :(得分:0)

这段代码将方向保持在-90度(非常适合横向模式,iPad 2的封面将悬挂在背面)。将它放在脚本中的end body标签下,或者将最后两行包装在onready call中。

function orient() {
    var keepOrientationAt = -90;
    var rotate = "rotate(" + (keepOrientationAt - window.orientation) + "deg)";
    document.getElementsByTagName("body")[0].style.webkitTransform = rotate;
}

window.onorientationchange = orient;    
orient();