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

QQ登录

只需一步,快速开始

查看: 9939|回复: 12

[结贴] 手机物理按键返回问题

  [复制链接]

9

主题

48

帖子

146

积分

初级会员

Rank: 2

积分
146
QQ
发表于 2015-12-30 09:56:04 | 显示全部楼层 |阅读模式
APP中想实现如下功能:
部分页面按返回键则页面返回
部分页面按返回键则提示再按一次退出程序

APP监听了attachDoubleClickExitApp,但现在是所有页面按返回都提示再按一次退出

想在实现返回功能的页面重新监听document.addEventListener('backbutton', listener, false);
结果发现事件被重复监听了,解除监听好像没有被执行!
$(window).on('beforeunload', function(){
    document.removeEventListener('backbutton', listener, false);
});


重复是指,每增加一次监听,按返回的时候就会执行一次这个监听函数
比如a.w,b.w,c.w分别监听,分别执行alert(1) alert(2) alert(3)
三个页面分别执行后,再任意页面按返回键,都会弹出1 、2  3,弹出顺序视监听的先后
发表于 2015-12-30 10:40:25 | 显示全部楼层
请问您是指什么页面的返回,是contents 还是 windowDialog
如果你设置组件的routable 属性为true  那么 后退就会就会回到上一页!
否则就会退出

其实weX5中,所有的页面最终运行时都是在同一个html中运行的!他们共用一个document对象!所以当然是真正的退出的时候才会执行监听事件了!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

9

主题

48

帖子

146

积分

初级会员

Rank: 2

积分
146
QQ
 楼主| 发表于 2015-12-30 10:42:24 | 显示全部楼层
liangyongfei 发表于 2015-12-30 10:40
请问您是指什么页面的返回,是contents 还是 windowDialog
如果你设置组件的routable 属性为true  那么 后 ...

contents
但怎么才能实现我所说的功能?
我并不是要每个页面都回退到上一个页面的,有些页面无需回退
回复 支持 反对

使用道具 举报

发表于 2015-12-30 10:58:30 | 显示全部楼层
kildare 发表于 2015-12-30 10:42
contents
但怎么才能实现我所说的功能?
我并不是要每个页面都回退到上一个页面的,有些页面无需回退 ...

一般的手机app中,后退都需要回到首页后才能退出的!
如过你想让contents组件不能回退到其他的content 可以设置contents组件的routable 属性为false
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

9

主题

48

帖子

146

积分

初级会员

Rank: 2

积分
146
QQ
 楼主| 发表于 2015-12-30 11:43:05 | 显示全部楼层
liangyongfei 发表于 2015-12-30 10:58
一般的手机app中,后退都需要回到首页后才能退出的!
如过你想让contents组件不能回退到其他的content 可 ...

我是很多.w文件,用Shell.openPage打开的
现在在首页加了CommonUtils.attachDoubleClickExitApp(function(){
                        return true;
                });
且首页Contents设置routable=true,但是现在任意位置按返回都提示再按一次退出
回复 支持 反对

使用道具 举报

发表于 2015-12-30 11:51:41 | 显示全部楼层
kildare 发表于 2015-12-30 11:43
我是很多.w文件,用Shell.openPage打开的
现在在首页加了CommonUtils.attachDoubleClickExitApp(function ...

你看看外卖案例中是有判断的!,因为所有的页面都共用同一个document对象!所以肯定是在哪个页面也会触发后退事件的!
你只有在attachDoubleClickExitApp中写判断,当前页面是那个的时候才会return true
否则就要return false  这样在其它页面就不会提示退出了!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

9

主题

48

帖子

146

积分

初级会员

Rank: 2

积分
146
QQ
 楼主| 发表于 2015-12-30 12:11:48 | 显示全部楼层
liangyongfei 发表于 2015-12-30 11:51
你看看外卖案例中是有判断的!,因为所有的页面都共用同一个document对象!所以肯定是在哪个页面也会触发 ...

if (self.comp('contents').getActiveIndex() === 0) {
                                        return true;
                                }
外卖是用这个判定的,但我的contents下是空的,
是通过Shell来打开page,没办法用index来判断
                var shellImpl = new ShellImpl(this, {
                        "contentsXid" : "pages",
                        "pageMappings" : {
                                "main":{
                                        url : '$UI/pftStore/index_main.w'
                                }
                        }
                 }
回复 支持 反对

使用道具 举报

9

主题

48

帖子

146

积分

初级会员

Rank: 2

积分
146
QQ
 楼主| 发表于 2015-12-30 12:18:50 | 显示全部楼层
kildare 发表于 2015-12-30 12:11
if (self.comp('contents').getActiveIndex() === 0) {
                                        return true;
                                }

我知道了,可以能过window.location.href来得到页面地址,然后做判断
回复 支持 反对

使用道具 举报

24

主题

203

帖子

435

积分

中级会员

Rank: 3Rank: 3

积分
435
QQ
发表于 2016-10-20 09:36:25 | 显示全部楼层
kildare 发表于 2015-12-30 12:18
我知道了,可以能过window.location.href来得到页面地址,然后做判断

找了好久,终于找到了方法,案例的全是contents的
回复 支持 反对

使用道具 举报

24

主题

203

帖子

435

积分

中级会员

Rank: 3Rank: 3

积分
435
QQ
发表于 2016-10-20 09:36:53 | 显示全部楼层
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-5 03:28 , Processed in 0.053517 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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