起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 3155|回复: 12

[结贴] android按物理返回按键,出现两个提示框

[复制链接]

29

主题

138

帖子

376

积分

中级会员

Rank: 3Rank: 3

积分
376
QQ
发表于 2016-11-4 19:00:32 | 显示全部楼层 |阅读模式
参考以下连接可以实现物理返回按键的监听
http://bbs.wex5.com/forum.php?mod=viewthread&tid=72551&extra=&page=1
我修改后的代码为
  1. Model.prototype.modelLoad = function(event) {

  2.                 justep.Shell.setIsSinglePage(true);
  3.                 this.comp('stateData').setValue('username', '');

  4.                 document
  5.                                 .addEventListener(
  6.                                                 "deviceready",
  7.                                                 function() { // 当设备准备完成时,增加一个事件监听函数
  8.                                                         var exitAppTicker = 0; // 退出APP点击次数
  9.                                                         var listener = function() { // 定义listener监听者
  10.                                                                 if (exitAppTicker == 0) { // 如果第一次点击退出APP
  11.                                                                         exitAppTicker++; // 点击次数增加1

  12.                                                                         // 退出应用消息框
  13.                                                                         var msg = $(
  14.                                                                                         '<div  style="z-index:999;text-align:center;font-size:16px;background-color:#808080;color:#FFFFFF;border-radius: 6px;-webkit-transition:all 0.4s;-webkit-transform:translate3d(0,-100%,0);position:absolute;top:80%;left:25%;height:40px;line-height:40px;width:50%;">再按一次退出应用</div>')
  15.                                                                                         .appendTo('body');
  16.                                                                         setTimeout(function() {
  17.                                                                                 msg.transform('translate3d(0,0,0)');
  18.                                                                         }, 1); // 展现对话框
  19.                                                                         setTimeout(function() {
  20.                                                                                 exitAppTicker = 0; // 3秒后点击次数清零,对话框消失
  21.                                                                                 msg.transform('translate3d(0,-100%,0)').transitionEnd(function() {
  22.                                                                                         msg.remove();
  23.                                                                                 });
  24.                                                                         }, 2000);
  25.                                                                 } else if (exitAppTicker == 1) { // 如果已经点击一次
  26.                                                                         navigator.app.exitApp(); // 则退出APP
  27.                                                                 }

  28.                                                         };
  29.                                                         document.addEventListener('backbutton', listener, false);
  30.                                                         $(window).on('beforeunload', function() {
  31.                                                                 document.removeEventListener('backbutton', listener, false);
  32.                                                         });
  33.                                                 }, false);

  34.         };
复制代码
然后在index.w中的 mainContainer 组件添加默认页./login.w
你按手机的物理按键后,就可以监测到返回按钮了。但是会有两个提示框同时出来。
如下图
2131231236.png

下面那个不知道哪里控制的,我想把他去掉,但是失败了。

接着我又发现一个奇怪的现象,只要进行页面切换即执行过一次 justep.Shell.showPage('xxxx');
就只剩下上面的提示内容,下面的那个提示框不见了。
如下图
4444444444.png


因此,想请教一下如何不要第一个图片中的底下那个对话框内容。






28

主题

180

帖子

631

积分

高级会员

Rank: 4

积分
631
QQ
发表于 2016-11-6 16:07:34 | 显示全部楼层
有个两个的原因是你上面的代码里带了一个再按一次退出程序,去掉不就好了。还有啊,为啥要自己监听啊?
回复 支持 反对

使用道具 举报

29

主题

138

帖子

376

积分

中级会员

Rank: 3Rank: 3

积分
376
QQ
 楼主| 发表于 2016-11-7 10:28:18 | 显示全部楼层
我是看人家的代码写的  http://bbs.wex5.com/forum.php?mod=viewthread&tid=72551&extra=&page=1

因为我想要点击两次按钮之后就退出应用

有没有什么方法去掉第一次的那个提示框呢?
回复 支持 反对

使用道具 举报

1

主题

3232

帖子

1174

积分

金牌会员

Rank: 6Rank: 6

积分
1174
QQ
发表于 2016-11-7 16:49:57 | 显示全部楼层
lanjackg2003 发表于 2016-11-7 10:28
我是看人家的代码写的  http://bbs.wex5.com/forum.php?mod=viewthread&tid=72551&extra=&page=1

因为我想 ...

监听后,取消了原本的返回上一页?但是你这给出了两次提示,就是触发了两次这个退出事件,不是说他提示出现了两次的问题吧,一段代码执行两次,最好打个debugger,看一下,第一次出现和第二次都是在执行什么出现的
在问题解决后,希望大家可以吧解决方法也分享一下,这样可以让更多的X5开发者共同进步,谢谢大家的知识共享
回复 支持 反对

使用道具 举报

29

主题

138

帖子

376

积分

中级会员

Rank: 3Rank: 3

积分
376
QQ
 楼主| 发表于 2016-11-7 17:00:31 | 显示全部楼层
闰土 发表于 2016-11-7 16:49
监听后,取消了原本的返回上一页?但是你这给出了两次提示,就是触发了两次这个退出事件,不是说他提示出 ...

我按一次 ‘返回’ 按钮 就有两个对话框出来
一个是代码里面控制的,另外一个不知道从哪里冒出来的

刚才在代码控制显示对话框那里增加了alert
发现只执行一次,并非调用了两次
回复 支持 反对

使用道具 举报

29

主题

138

帖子

376

积分

中级会员

Rank: 3Rank: 3

积分
376
QQ
 楼主| 发表于 2016-11-8 11:25:37 | 显示全部楼层
闰土 发表于 2016-11-7 16:49
监听后,取消了原本的返回上一页?但是你这给出了两次提示,就是触发了两次这个退出事件,不是说他提示出 ...

请问这个问题有什么方式解决吗?
或者有什么方法可以实现?
回复 支持 反对

使用道具 举报

1

主题

3232

帖子

1174

积分

金牌会员

Rank: 6Rank: 6

积分
1174
QQ
发表于 2016-11-8 13:26:54 | 显示全部楼层
lanjackg2003 发表于 2016-11-8 11:25
请问这个问题有什么方式解决吗?
或者有什么方法可以实现?

一般来首都是出现一次的啊,包括品台提供的案例,接管物理返回键的操作,这个具体原因找不到,不知道怎么解决啊
在问题解决后,希望大家可以吧解决方法也分享一下,这样可以让更多的X5开发者共同进步,谢谢大家的知识共享
回复 支持 反对

使用道具 举报

29

主题

138

帖子

376

积分

中级会员

Rank: 3Rank: 3

积分
376
QQ
 楼主| 发表于 2016-11-8 13:46:12 | 显示全部楼层
闰土 发表于 2016-11-8 13:26
一般来首都是出现一次的啊,包括品台提供的案例,接管物理返回键的操作,这个具体原因找不到,不知道怎么 ...

你用我上面贴的代码现象也是一样吗?
如果是的话,我再想办法绕开这个问题

或者你的平台示例接管物理返回按键的示例在那里,我参考一下。
谢谢
回复 支持 反对

使用道具 举报

29

主题

135

帖子

273

积分

中级会员

Rank: 3Rank: 3

积分
273
QQ
发表于 2016-11-15 16:57:08 | 显示全部楼层
请问楼主,这段代码是在index.w页面的modelload方法里面吗?
回复 支持 反对

使用道具 举报

29

主题

138

帖子

376

积分

中级会员

Rank: 3Rank: 3

积分
376
QQ
 楼主| 发表于 2016-11-16 10:14:17 | 显示全部楼层
yunguhui 发表于 2016-11-15 16:57
请问楼主,这段代码是在index.w页面的modelload方法里面吗?

是的,我放在index.w这个文件里面
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2025-6-25 18:55 , Processed in 0.075669 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表