当前位置: 首页 > 面试题库 >

如何在iOS上使用Phonegap正确检测方向变化?

钱锦
2023-03-14
问题内容

我在下面找到此定向测试代码,以查找JQTouch参考资料。这可以在移动Safari上的iOS模拟器中正常运行,但在Phonegap中无法正确处理。我的项目遇到了与杀死该测试页相同的问题。有没有办法在Phonegap中使用JavaScript来感知方向变化?

window.onorientationchange = function() {
  /*window.orientation returns a value that indicates whether iPhone is in portrait mode, landscape mode with the screen turned to the
    left, or landscape mode with the screen turned to the right. */
  var orientation = window.orientation;
  switch (orientation) {
    case 0:
      /* If in portrait mode, sets the body's class attribute to portrait. Consequently, all style definitions matching the body[class="portrait"] declaration
         in the iPhoneOrientation.css file will be selected and used to style "Handling iPhone or iPod touch Orientation Events". */
      document.body.setAttribute("class", "portrait");

      /* Add a descriptive message on "Handling iPhone or iPod touch Orientation Events"  */
      document.getElementById("currentOrientation").innerHTML = "Now in portrait orientation (Home button on the bottom).";
      break;

    case 90:
      /* If in landscape mode with the screen turned to the left, sets the body's class attribute to landscapeLeft. In this case, all style definitions matching the
         body[class="landscapeLeft"] declaration in the iPhoneOrientation.css file will be selected and used to style "Handling iPhone or iPod touch Orientation Events". */
      document.body.setAttribute("class", "landscape");

      document.getElementById("currentOrientation").innerHTML = "Now in landscape orientation and turned to the left (Home button to the right).";
      break;

    case -90:
      /* If in landscape mode with the screen turned to the right, sets the body's class attribute to landscapeRight. Here, all style definitions matching the
         body[class="landscapeRight"] declaration in the iPhoneOrientation.css file will be selected and used to style "Handling iPhone or iPod touch Orientation Events". */
      document.body.setAttribute("class", "landscape");

      document.getElementById("currentOrientation").innerHTML = "Now in landscape orientation and turned to the right (Home button to the left).";
      break;
  }
}

问题答案:

这是我的工作:

function doOnOrientationChange() {

    switch(window.orientation) {

      case -90: case 90:

        alert('landscape');

        break;

      default:

        alert('portrait');

        break;

    }

}



window.addEventListener('orientationchange', doOnOrientationChange);



// Initial execution if needed

doOnOrientationChange();

* 根据MDN的定义,

*2019年5月更新:
window.orientation已弃用,大多数浏览器均不支持。该事件与window.orientation相关联,因此可能不应该使用。orientationchange



 类似资料:
  • 问题内容: 我使用的是Swift,我希望能够在旋转到风景时加载UIViewController,有人可以指出正确的方向吗? 我在网上找不到任何东西,并且对文档有些困惑。 问题答案: 这是我的工作方式: 在里面 我把函数: 然后在AppDelegate类中放入以下函数: 希望这对其他人有帮助! 谢谢!

  • 问题内容: 我想将两个图像添加到单个图像视图(即,用于横向显示一个图像,用于纵向显示另一个图像),但是我不知道如何使用快速语言检测方向变化。 我尝试了这个答案,但只拍了一张图片 我是iOS开发的新手,任何建议将不胜感激! 问题答案:

  • 我想在单个图像视图中添加两幅图像(即横向一幅图像和纵向另一幅图像),但我不知道如何使用swift语言检测方向变化。 我试过这个答案但它只需要一个图像 我是iOS开发新手,如有任何建议,将不胜感激!

  • 我有一个使用jquery mobile的应用程序,它由几个html页面组成,每个页面中都有几个jquery页面元素。在桌面浏览器上,一切正常,但当我把它加载到我的android设备(运行2.3)上时,第一个页面看起来很好,但只要你点击一个链接(比如从index.html)- 那么,是否有正确的方法在不同的html页面之间移动呢?我没有得到任何浏览器错误,所以一切似乎都工作正常,但没有jqm的样式或

  • 问题内容: 是否可以使用JavaScript在iPad或Galaxy Tab上检测浏览器方向的变化?我认为使用CSS媒体查询是可能的。 问题答案: 更新: 您可能要签出 jQuery移动方向更改 或普通的JS之一: MDN: 较旧的答案 http://www.nczonline.net/blog/2010/04/06/ipad-web-development- tips/ iPad上的Safari

  • 问题内容: 我需要检测设备何时处于纵向方向,以便可以触发特殊的动画。但是我不希望我的观点自动旋转。 将设备旋转到纵向时,如何覆盖自动旋转的视图?我的应用程序仅需要以横向显示视图,但是如果我想能够检测到纵向旋转,似乎还需要支持纵向。 问题答案: 当应用程序加载或视图加载时,尝试执行以下操作: 然后添加以下方法: 以上内容可让您注册设备的方向更改,而无需启用视图的自动旋转。 在iOS的所有情况下,当您