1. 系统事件
Events模块管理客户端事件,包括系统事件,如扩展API加载完毕、程序前后台切换等。
监听系统事件.png
(1) eg1:监听网络状态变化
onLoad:function(){
// #ifdef APP-PLUS
var appid = plus.runtime.appid;
console.log('应用的 appid 为:' + appid);
// 监听设备网络状态变化事件
plus.globalEvent.addEventListener('netchange', function(){
console.log("监听设备网络状态变化事");
uni.showToast({
title:"网络状态变化"
})
});
// #endif
},
2. 设备按键事件
Key管理设备按键事件
设备按键事件.png
KeyType的值(String 类型) | 说明 | 场景示例 | Android平台 | IOS平台 |
---|---|---|---|---|
backbutton | 设备“返回”按钮按键事件 | 如果需要改变默认“返回”按钮的处理逻辑,则可通过plus.key.addEventListener来注册监听"backbutton"事件。如: 监听back键事件并实现和home键一样的效果 | 默认处理逻辑为退出应用。 | 标题栏的“返回”按钮点击时触发此事件。 默认不处理此事件。 |
keydown | 键按下事件 | 如果需要改变默认键按下的处理逻辑,则可通过plus.key.addEventListener来注册监听"keydown"事件。 可通过回调函数中KeyEvent对象的keyCode来获取按下的键值。 | 根据系统keydown事件触发,软键盘不会触发此事件。 默认处理逻辑由系统决定。 | 不触发此事件。 |
keyup | 键松开事件 | 如果需要改变默认键松开的处理逻辑,则可通过plus.key.addEventListener来注册监听"keyup"事件。 可通过回调函数中KeyEvent对象的keyCode来获取松开的键值。 | 根据系统keyup事件触发,软键盘不会触发此事件。 默认处理逻辑由系统决定。 | 不触发此事件。 |
longpressed | 键长按事件 | 如果需要改变默认长按键的处理逻辑,则可通过plus.key.addEventListener来注册监听"longpressed"事件。 长按键时会多次触发回调函数,通过回调函数中KeyEvent对象的keyCode来获取长按的键值。 | 根据系统keyup事件触发,软键盘不会触发此事件。 默认处理逻辑由系统决定。 | 不触发此事件。 |
menubutton | 设备“菜单”按钮按键事件 | 如果需要改变默认“菜单”按钮的处理逻辑,则可通过plus.key.addEventListener来注册监听"menubutton"事件。 | 默认处理逻辑无操作。 | 不触发此事件。 |
searchbutton | 设备“搜索”按钮按键事件 | 如果需要改变默认“搜索”按钮的处理逻辑,则可通过plus.key.addEventListener来注册监听"searchbutton"事件。 | 默认处理逻辑为打开系统搜索应用。 | 不触发此事件。 |
volumeupbutton | 设备“音量+”按钮按键事件 | 如果需要改变默认“音量+”按钮的处理逻辑,则可通过plus.key.addEventListener来注册监听"volumeupbutton"事件。 | 默认处理逻辑为增加系统音量。 | 不触发此事件。 |
volumedownbutton | 设备“音量-”按钮按键事件 | 如果需要改变默认“音量-”按钮的处理逻辑,则可通过plus.key.addEventListener来注册监听"volumedownbutton"事件。 | 默认处理逻辑为减少系统音量。 | 不触发此事件。 |
(1) eg1:监听back键
- 方法一
onBackPress:function(event){//只有返回值为 true 时,才表示不执行默认的返回,自行处理此时的业务逻辑
console.log("点击了返回键-onBackPress:" + JSON.stringify(event));
/* if (event.from === "backbutton") {
//自定义逻辑
return true;
} */
}
点击返回键,则打印结果为
点击了返回键-onBackPress:{"from":"backbutton"}
- 方法二
onLoad:function(){
// #ifdef APP-PLUS
plus.key.addEventListener('backbutton',function(KeyEvent){
console.log("点击了返回键:" + JSON.stringify(KeyEvent));
console.log("点击了返回键:" + KeyEvent.keyCode);
});
// #endif
},
点击返回键,则打印结果为
点击了返回键:{"keycode":"back","keyCode":4,"keyType":"back"}
点击了返回键:4
说明:本人使用真机测试,平板上的各个虚拟按键对应的键值码如下,不同机器可能对应的键值码不一样。可参考键盘上的按键与对应的键码值keyCode。

(2) eg2:监听键按下事件
onLoad:function(){
// #ifdef APP-PLUS
plus.key.addEventListener('keydown',function(KeyEvent){
console.log("按下了键:" + JSON.stringify(KeyEvent));
console.log("按下了键:" + KeyEvent.keyCode);
if(KeyEvent.keyCode == 4){
plus.nativeUI.toast("按下了回车键");
}else if(KeyEvent.keyCode == 24){
plus.nativeUI.toast("按下了音量加键");
}else if(KeyEvent.keyCode == 25){
plus.nativeUI.toast("按下了音量减键");
}else if(KeyEvent.keyCode == 82){
plus.nativeUI.toast("按下了三点键");
}else{
plus.nativeUI.toast(KeyEvent.keyCode + "");
}
});
// #endif
},
以按下back键为例,则打印结果为
按下了键:{"keycode":"keydown","keyCode":4,"keyType":"keydown"}
按下了键:4
(3) eg3:监听键松开事件
onLoad:function(){
// #ifdef APP-PLUS
plus.key.addEventListener('keyup',function(KeyEvent){
console.log("松开了键:" + JSON.stringify(KeyEvent));
console.log("松开了键:" + KeyEvent.keyCode);
});
// #endif
},
以松开back键为例,则打印结果为
松开了键:{"keycode":"keyup","keyCode":4,"keyType":"keyup"}
松开了键:4
backbutton
、keydown
和keyup
事件不同同时获取到打印结果。
(4) eg4:监听键长按事件
onLoad:function(){
// #ifdef APP-PLUS
plus.key.addEventListener('keyup',function(KeyEvent){
console.log("长按了键:" + JSON.stringify(KeyEvent));
console.log("长按了键:" + KeyEvent.keyCode);
});
// #endif
},
注意:长按back键或者Home键等,都未获取到打印结果。
网友评论