2011-04-05 77 views
0

我注意到Android(迄今为止都是2.2和3.0)设置window.orientation javascript变量的一个问题。当你最初加载一个网页时,一切正常。window.orientation被正确设置为设备的方向(0,90,-90,180)。当您通过window.open(“newpage”)javascript调用启动新页面时,会出现问题。当新的页面打开window.orientation值始终为0,不管你是在什么方位下面是一个示例网页,可以证明这一点:Android 3.0 Web Dev初始定位问题

<button onclick="window.open('AndroidTesting.html')">Click Me</button> 

    <script type="text/javascript"> 

    orientationEvent = "resize"; 
    window.addEventListener(orientationEvent, function() { 
     setTimeout(displayChange(), 0); 
    }, false); 

     var myPageWidth = 0; 
     var myPageHeight = 0; 

     var lastOrientation = "Landscape"; 

     function displayChange() { 

      if ((window.orientation == 90) || (window.orientation == -90)) { 
       lastOrientation = "Portrait"; 
      } 
      if ((window.orientation == 0) || (window.orientation == 180)) { 
       lastOrientation = "Landscape"; 
      } 

      document.getElementById('storydiv').innerHTML = "In " + lastOrientation + " mode"; 

     } 

    </script> 

当您单击按钮在新选项卡中打开同一页面时,如果您未处于默认模式(Android 2.2默认模式或0 a ngle是Android 3.0中的肖像,0角是风景),但是一旦你旋转到另一个模式,然后返回方向工作。

有没有人看过这个问题?有没有解决办法,还是只是一个问题,因为我做错了什么?

感谢您的帮助!

回答

0

我不知道这是否是一个好方法,但似乎在Android上,screen.width和screen.height取决于设备方向。

if(android){ 
    if(screen.width>screen.height){ 
     return 90; 
    }else{ 
     return 0; 
    } 
}else{ 
    return window.orientation; 
} 

该解决方案的主要问题是在os检测中。