Javascript Orientation Change 不适用于 iPad 上的 PhoneGap

Posted

技术标签:

【中文标题】Javascript Orientation Change 不适用于 iPad 上的 PhoneGap【英文标题】:Javascript Orientation Change doesn't work with PhoneGap on iPad 【发布时间】:2010-08-23 13:14:58 【问题描述】:

我正在将一个小型的 html/CSS/javascript 驱动的网络杂志改编为 iPad 的 iApp,并带有出色的移动框架 PhoneGap。一切都很好,除了方向从纵向模式更改为横向模式。

我在 index.html(纵向)的标头中使用了以下 Javascript 代码:

  var isiPad = navigator.userAgent.match(/iPad/i) != null;
  var isiPhone = navigator.userAgent.match(/iPhone/i) != null;

  function updateOrientation() 
   if (isiPad || isiPhone) 
    switch (window.orientation) 
     case 90:
      window.location = "index_landscape.html";
      break;
     case -90:
      window.location = "index_landscape.html";
      break;
    
   
  

带有以下正文标签:

<body onorientationchange="updateOrientation();">

如果我将 iPad 旋转到横向模式,它不会更改为 index-landscape.html。

有人知道问题出在哪里吗? 是否可以更改 HTML 文件,同时在 PhoneGap 框架内更改方向? 换句话说,我可以只使用 一个 HTML 文件 (index.html) 和 PhoneGap 并且必须使用 CSS 来改变方向吗?

如果我使用 iPad Safari 浏览器将应用程序作为网站检出,则方向更改可以正常工作。

感谢您的帮助!

【问题讨论】:

发现window.orientation 在android 2.2 和Droid X 上使用PhoneGap 对我有用。 【参考方案1】:

我刚刚找到了解决该问题的其他方法。我使用 body onload 函数和 phonegap.js 中的 onDeviceReady 函数来检查方向:

以下 javascript 代码现在可以正常工作:

    function onLoad() 
        document.addEventListener("deviceready", onDeviceReady, false);
    

    function onDeviceReady() 
        document.addEventListener("orientationChanged", updateOrientation);
    

    function updateOrientation(e) 
        switch (e.orientation) 
            case 90:
                window.location = "index_landscape.html";
                break;
            case -90:
                window.location = "index_landscape.html";
                break;
        
    

更新:两年多以前,旧版本的 Phonegap 和 iOS SDK 有效,但根据一些用户的说法,它不再有效了。

【讨论】:

这个事件对我不起作用(Android 2.2 on Droid X)并且没有记录orientationChanged PhoneGap事件(至少我在docs.phonegap.com上找不到)。 这行不通,因为 webview 只是视图的子视图,实际上方向发生了变化 这里的答案***.com/questions/12685698/… 为我工作(ios 7,xcode 5,phonegap 3.1.0)。

以上是关于Javascript Orientation Change 不适用于 iPad 上的 PhoneGap的主要内容,如果未能解决你的问题,请参考以下文章

用JavaScript判断横屏竖屏问题

JavaScript 监听移动端横竖屏状态的几种方式

JavaScript 监听移动端横竖屏状态的几种方式

使用JavaScript判断手机处于横屏还是竖屏

javascript CH。 26,实施例1

javascript CH-23.html