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.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>
时间: 2024-11-05 18:57:58

PhoneGap API 之事件处理的相关文章

PhoneGap API 之事件处理_双击返回键退出程序

<!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"/> <scr

PhoneGap API介绍:Events

事件类型: backbutton deviceready menubutton pause resume searchbutton online offline backbutton 当用户在Android系统上点击后退按钮的时候触发此事件. document.addEventListener("backbutton", yourCallbackFunction, false); 详述: 如果你需要在Android系统上重载默认后退按钮的行为,可以通过注册一个事件监听器来监听"

PhoneGap API 之多媒体

一. MediaApi 简单介绍 PhoneGap API Media 对象提供录制和回放设备上的音频文件的能力 参数: var media = new Media(src, mediaSuccess, [mediaError], [mediaStatus]); src: 一个包含音频内容的 URI (媒体音乐的播放器) mediaSuccess: (可选项)当一个 Media 对象完成当前的播放.录制或停止操作时触 发的回调函数 mediaError:(可选项)当出现错误时调用的回调函数 me

PhoneGap API介绍:Camera

本文将介绍PhoneGap API——Camera:使用设备的摄像头采集照片,对象提供对设备默认摄像头应用程序的访问. 方法: camera.getPicture 参数: cameraSuccess cameraError cameraOptions camera.getPicture 选择使用摄像头拍照,或从设备相册中获取一张照片.图片以base64编码的字符串或图片URI形式返回. 简单的范例: navigator.camera.getPicture( cameraSuccess, came

PhoneGap API介绍:File

本文将介绍PhoneGap API——File:通过JavaScript截获本地文件系统.File是用于读取.写入和浏览文件系统层次结构的PhoneGap API. 对象: DirectoryEntry DirectoryReader File FileEntry FileError FileReader FileSystem FileTransfer FileTransferError FileUploadOptions FileUploadResult FileWriter Flags Lo

React 组件的生命周期API和事件处理

一.简单记录React的组件的简洁的生命周期API: A:实例化期: 一个实例第一次被创建时所调用的API与其它后续实例被创建时所调用的API略有不同. 实例第一次被创建时会调用getDefaultProps,而后续实例创建时不会调用这个方法. 实例被创建时,依次被调用的API有: getDefaultProps: 实例第一次被创建时才调用,对于组件类来说,它只调用一次. 这个方法返回的对象可为实例设置默认的props值. getInitialState: 对于每个实例来说,这个方法只调用一次.

【课程分享】HTML5开发框架PhoneGap实战(jQuery Mobile开发、API解析、3个经典项目实战)

对这个课程有兴趣的朋友可以加我的QQ2059055336和我联系 课程讲师:厉风行 课程分类:Java 涉及项目:我要地图.豆瓣音乐.小强快跑 用到技术:HTML5.jQuery Mobile.PhoneGap 其他特性:PhoneGap API 涵盖内容:代码.视频.ppt 课时数量:40 PhoneGap前景 Adobe最近公开表示将会为HTML5开发推出更多有意义的工具.有业内人士表示,Adobe的HTML5战略特别值得注意,此外Adobe对于乔布斯的此番公开批评曾积极地回应道:"乔布斯说

phonegap

CDVPlugin 类是所有 Cordova 类均必须扩展的父类.CDVPlugin 类通过 PhoneGAP API 封装本机 JavaScript 通信所需的所有必要逻辑.PhoneGap.exec 函数可让您调用该新类上的函数.CDVPlugin 类包含一个名为writeJavascript 的核心函数,可让您调用 PhoneGap 应用程序 Web 视图内的 JavaScript.本机到 Web JavaScript 这一方向的所有通信均必须使用 writeJavascript 函数完成

Phonegap学习入门篇

安装Node.js 安装Git 设置代理 公司内网使用时可能需要设置代理 ·设置CMD代理 set http_proxy=http://127.0.0.1:8080 set https_proxy=http://127.0.0.1:8080 ·设置npm代理 npm config set registry http://registry.npmjs.org npm config set proxy="http://127.0.0.1:8080" npm config set https