PhoneGap API 之事件处理

一、 deviceready 事件

  1、在使用 PhoneGap 开发应用时,deviceready 事件是非常常用的。这一事件在设备的本地 环境和页面完全加载完成之后才触发

  2、注意:此事件一般晚于 jquery 的 ready 事件,jquery 的 ready 事件是在 DOM 完全加载 完成后触发,deviceready 则是设备的本地环境和页面完全加载完成之后才触发

  3、PhoneGap 包含两个基础,native 和 JavaScript,当 native 加载的时候,自定义的一些图片 会被调用,

     而 JavaScript 需要在 DOM 加载后就会被加载。这是可能造成 JavaScript 在图片加 载前就已经被调用了。

     使用 deviceready事件可以很好的解决这类问题,他可以保证PhoneGap是在完全加载完成后,才会被触发。

 

二、 pause 事件

  当 PhoneGap 应用被置为后台时触发

 

 

三、 resume 事件

  当 PhoneGap 应用重新从后台置为前台时触发

 

 

四、 online 事件

  当 PhoneGap 应用连接因特网时触发

 

五、 offline 事件

  当 PhoneGap 应用断开因特网时触发

 

六、 backbutton 事件

  当单击退回按钮时触发

 

七、 menubutton 事件

  当单击菜单按钮时触发

 

 

八、 batterycritical 事件

  当 PhoneGap 应用监控到电池达到警告时触发(20%) batterycritical 的处理程序将会调用一个对象。

  该对象包含以下两个属性:

     level:电池剩余电量的百分比,取值范围是 0-100。(数字类型)

     isPlugged:boolean 型的值,表示设备是否接通电源。

 

 

九、 batterylow 事件

  在电量非常低的情况下触发(5%) batterylow 的处理程序将会调用一个对象。

  该对象包含以下两个属性: 

    level:电池剩余电量的百分比,取值范围是 0-100。(数字类型)

    isPlugged:boolean 型的值,表示设备是否接通电源。

 

 

十、 batterystatus 事件

  PhoneGap 应用监控到电池状态有改变时触发(每当电量变化 1%的时候触发一次)

  batterystatus 的处理程序将会调用一个对象,该对象包含以下两个属性:

    level:电池剩余电量的百分比,取值范围是 0-100。(数字类型)

    isPlugged:boolean 型的值,表示设备是否接通电源。

 

 

十一、主要代码的实现

<!DOCTYPE html> 

<html>

<head>

<meta charset="utf-8">

<title>jQuery  Mobile  Web 应用程序</title>

<link href="../jquery.mobile-1.3.2.css" rel="stylesheet" type="text/css"/>

<script src="../jquery.js" type="text/javascript"></script>



<script src="../jquery.mobile-1.3.2.js" type="text/javascript"></script>

<script src="../cordova.js" type="text/javascript"></script>

<script type="text/javascript">

    $(function(){

        //注册设备和页面加载完成的监听事件deviceready,当设备加载完成后执行myDeviceready这个函数

        //第一个参数是监听的事件,第二个参数是回调函数,当触发这个事件时执行的函数,第三个参数是false

        document.addEventListener('deviceready',myDeviceready,false);

    })

    

    function myDeviceready(){

        //alert('设备加载完成');

        console.log('设备加载完成');//在eclipse控制台中打印

        $("#deviceStatus .ui-btn-text").text("设备加载完成");//更改html中的文字

        

        

        //当设备加载完后,注册其他事件

        document.addEventListener('pause',myPause,false);

        document.addEventListener('resume',myResume,false);

        

        document.addEventListener('online',myOnline,false);

        document.addEventListener('offline',myOffline,false);

        

        document.addEventListener('backbutton',myBackbutton,false);

        document.addEventListener('menubutton',myMenubutton,false);

        

        //batterystatus  该事件是用window监听的

        window.addEventListener('batterystatus',myBatterystatusListener,false);

        

        window.addEventListener('batterycritical',myBatterycritical,false);

        

        window.addEventListener('batterylow',myBatterylow,false);

        

    }

    //应用被置为后台以后执行的函数

    function myPause(){

        console.log('应用被置为后台');

        $('#deviceCurrentStatus .ui-btn-text').text('应用被置为后台');

        

    }

    //应用被置为前台

    function myResume(){

        console.log('应用被置为前台');

        $('#deviceCurrentStatus .ui-btn-text').text('应用被置为前台');

    }

    

    

    //连接网络的时候执行的事件

    function myOnline(){

        console.log('连接网络的时候执行的事件');

        $('#deviceConectionStatus .ui-btn-text').text('连接网络的时候执行的事件');

    }

    //断开网络执行的事件

    function myOffline(){

        console.log('断开网络执行的事件');

        $('#deviceConectionStatus .ui-btn-text').text('断开网络执行的事件');

    }

    

    

    var backcount=0;

    var menucount=0;

    //点击返回按钮的事件

    function myBackbutton(){

        console.log('返回按钮被点击了');

        backcount++;

        $('#backButtonTouch .ui-btn-text').text('返回按钮被点击了'+backcount+'');

    }

    //菜单按钮

    function myMenubutton(){

        console.log('菜单按钮被点击了');

        menucount++;

        $('#menuButtonTouch .ui-btn-text').text('菜单按钮被点击了'+menucount+'');

    }    

    

    

    //电量状态

    function myBatterystatusListener(info){

        console.log("电量值" + info.level);

        $("#batterystatus .ui-btn-text").text("电量值" + info.level+info.isPlugged);

    }

    //电量低于20%的时候触发

    function myBatterycritical(info){

        console.log("电量低于20%的时候触发" + info.level);        

    }

    //电量低于5%的时候触发

    function myBatterylow(info){

        console.log("电量低于5%的时候触发" + info.level);        

    }

    

</script>

</head>

<body>

    <div data-role="page">

        <div data-role="header">

            <h1>PhoneGap实战</h1>

        </div>

        <div data-role="content">

            <a href="#" data-role="button" id="deviceStatus">设备加载中....</a>

            <a href="#" data-role="button" id="deviceCurrentStatus">应用为前台</a>

            <a href="#" data-role="button" id="deviceConectionStatus">连接加载中....</a>

            <a href="#" data-role="button" id="backButtonTouch">返回按钮被按0次</a>

            <a href="#" data-role="button" id="menuButtonTouch">菜单按钮被按0次</a>

            <a href="#" data-role="button" id="batterystatus">电量获取中...</a>

        </div>

        <div data-role="footer">

            <h4>&nbsp;</h4>

        </div>

    </div>

</body>

</html>

 

你可能感兴趣的:(PhoneGap)