Android中的mediaMatch? (Phonegap方向)

时间:2013-02-06 20:07:16

标签: javascript android cordova

我正在努力改变Phonegap中的方向。我的计划是在方向改变时改变CSS文件(也许这是一种令人费解的方式),但我正在努力让任何依赖于orietation的事件发生。我目前正在使用代码:

window.onorientationchange = function() {

  navigator.notification.alert(
        'orientation change!',  // message
        'Portrait',            // title
        'buttton');              // buttonName

  if (window.matchMedia("(orientation: portrait)").matches){
      navigator.notification.alert(
        'now in portrait',  // message
        'Portrait',            // title
        'buttton');              // buttonName
  }
  else{
    alert("landscape")
  }
}

第一个警报(无论何时方向改变)都没有问题,但第二个警报(当它特意改变为风景时)没有发生。我在Android版本2.3.5上。 (这种方法是由Razvan在this问题上提出的)

1 个答案:

答案 0 :(得分:0)

您需要在MediaQueryList对象上设置侦听器。例如,见下文。

除了媒体查询之外,还有其他方法可以检索设备方向更改。搜索“mdn orientationchange”以获取示例。

  1. 创建MediaQueryList对象,'orientation'。包含add / removeListener,媒体和匹配。
  2. 创建监听器'orientationListener'。测试媒体查询匹配。
  3. 获取初始方向值
  4. 听取发生的任何变化

    var orientation = window.matchMedia("(orientation: portrait)"),
        orientationListener = function(mql) {
    
            if (mql.matches) {
                // Media query does match orientation portrait
            } else {
                // Media query does not match which should mean orientation is now landscape
            }
    
        };
    
    // Gets initial match
    
    orientationListener(orientation);
    
    // Listens for change
    
    orientation.addListener(orientationListener);