如何在移动Web应用程序上禁用切换横向/纵向(Android Browser/iOS-Mobile Safari)

SPi*_*lai 9 javascript iphone mobile html5 android

我试图禁用电话轮换,影响我的一个HTML5移动应用程序的网页.没有重新组织布局,调整大小,方向更改行为.

我想要它,以便您旋转手机,加载的初始布局将保持不变,迫使用户以原始方向使用该应用程序.用户逻辑有许多细微之处,我真的觉得这在我的应用程序中是必需的,所以请不要对这个选择做出评论,而应该在第一句话中帮助解决我的问题.

  1. 我试着聆听既有"orientationchange"和"调整大小"的活动,并呼吁的preventDefault和stopPropagation他们,以防止重组页面打开时以适应横向视图的任何浏览器的行为.好吧,显然防止了任何事情(理想情况下).

    window.addEventListener("orientationchange", function (e) {
    e.preventDefault();
    e.stopPropagation();
    }, false);
    
    window.addEventListener("resize", function (e) {
    e.preventDefault();
    e.stopPropagation();
    }, false);
    
    Run Code Online (Sandbox Code Playgroud)

完全没有区别.浏览器仍在Android(包括pre2.1和之后)和iPhone 4-5上重新组织页面.

  1. 尝试过meta标签

    <meta name="viewport" content="initial-scale=1.0, user-scalable=no />
    
    Run Code Online (Sandbox Code Playgroud)

    然后生气了,试过了

    <meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width" />
    
    Run Code Online (Sandbox Code Playgroud)

    两者都没有区别.

  2. 在StackOverflow上疯狂地看了一下,看到我在第1步中做了几次.在那里多次出现......再次尝试确保我没有弄乱一些东西.没工作.

  3. 我骄傲地吮吸着,然后决定因为骄傲而继续撞到一堵砖墙,然后真的被我的骄傲所吸引并贴在这里.

HALP.

小智 6

我使用以下工作来完成它,它要求用户切换回纵向模式.
一旦用户切换回纵向模式,他将被允许与应用程序交互.

<head>
<style type="text/css">
#landscape{
         position: absolute;
         top: 0px;
         left: 0px;
         background: #000000;
         width: 100%;
         height: 100%;
         display: none; 
         z-index: 20000;
         opacity: 0.9;
         margin:0 auto;
}
#landscape div{

        color: #FFFFFF;                                  
        opacity: 1;
        top: 50%;
        position: absolute;
        text-align: center;
        display: inline-block;
        width: 100%;
}
</style>
<script>          
      function doOnOrientationChange()
      {
        switch(window.orientation) 
        {  
          case -90:                 
                 document.getElementById("landscape").style.display="block";
                 break;
          case 90:              
                document.getElementById("landscape").style.display="block";                 
                break;
         default:                   
                document.getElementById("landscape").style.display="none";
                break;                            
        }
      }

      //Listen to orientation change
      window.addEventListener('orientationchange', doOnOrientationChange);  

    </script>
</head>
<body onload="doOnOrientationChange();">
<div id="landscape"><div>"Rotate Device to Portrait"</div></div>
</body>
Run Code Online (Sandbox Code Playgroud)


inv*_*vot 6

显而易见的解决方案是使用javaScript:

if(window.innerHeight > window.innerWidth){
    document.getElementsByTagName("body")[0].style.transform = "rotate(90deg)";
}
Run Code Online (Sandbox Code Playgroud)

屏幕旋转时,向右旋转.


san*_*raj -4

添加android:configChanges="keyboardHidden|orientation"到您的 AndroidManifest.xml。这告诉系统您将自己处理哪些配置更改 - 在这种情况下,什么也不做。

<activity android:name = "MyActivity" android:configChanges="keyboardHidden|orientation">