我在这个问题上看到了类似的问题,但它们与本机应用程序有关。 我为在浏览器中运行的iPhone / iPad构建了Web应用程序(Safari)。
我想知道是否有办法阻止浏览器中的方向更改,可能是通过某个元标记。 我知道视口元标记允许您指定缩放和缩放功能,因此可能会有类似的方向。
我怀疑这是可能的,但我想我只是在这里提出问题。
答案 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();