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

QQ登录

只需一步,快速开始

查看: 6613|回复: 6

[分享] 分享下windowDialog安卓物理返回键监听返回父页面的方法

  [复制链接]

1

主题

4

帖子

27

积分

新手上路

Rank: 1

积分
27
QQ
发表于 2016-1-12 17:43:45 | 显示全部楼层 |阅读模式
刚遇到了windowDialog安卓物理返回键监听返回父页面的问题,在网上没有百度到解决办法,就自己想了一个,试了一下居然成功了,于是分享下:

1、在define外设置如下内容:
var self=null;
function setSelf(sel){
        this.self=sel;
}
function goBack(){
        self.comp("windowReceiver").windowCancel();
}


2、设置modelLoad事件:
Model.prototype.modelLoad = function(event){
        setSelf(this);
};


3、在windowReceiver的Receive事件中注册监听:
Model.prototype.windowReceiverReceive = function(event){
        //监听返回按钮
        document.addEventListener("deviceready", function() {
                var listener = function(){
                        goBack();
                        document.removeEventListener('backbutton', listener, false);
                };
                document.addEventListener('backbutton', listener, false);
                $(window).on('beforeunload', function(){
                        document.removeEventListener('backbutton', listener, false);
                });
        }, false);
};


完整代码如下:
define(function(require){
        var $ = require("jquery");
        var justep = require("$UI/system/lib/justep");

        var Model = function(){
                this.callParent();
        };


        Model.prototype.windowReceiverReceive = function(event){
                //监听返回按钮
                document.addEventListener("deviceready", function() {
                        var listener = function(){
                                goBack();
                                document.removeEventListener('backbutton', listener, false);
                        };
                        document.addEventListener('backbutton', listener, false);
                        $(window).on('beforeunload', function(){
                                document.removeEventListener('backbutton', listener, false);
                        });
                }, false);
        };

        Model.prototype.backBtnClick = function(event){
                this.comp("windowReceiver").windowCancel();
        };

        Model.prototype.modelLoad = function(event){
                setSelf(this);
        };

        return Model;
});

var self=null;
function setSelf(sel){
        this.self=sel;
}
function goBack(){
        self.comp("windowReceiver").windowCancel();
}

评分

参与人数 1威望 +15 收起 理由
ysk007 + 15 很给力!

查看全部评分

13

主题

66

帖子

116

积分

初级会员

Rank: 2

积分
116
QQ
发表于 2016-5-24 13:16:40 | 显示全部楼层
liangyongfei 发表于 2016-3-1 09:58
不同这么麻烦把!windowDialog组件只要设置路由的属性为true 按物理键就可以返回的! ...

楼主的方法好,您这种方法真心不可取
回复 支持 1 反对 0

使用道具 举报

16

主题

51

帖子

129

积分

初级会员

Rank: 2

积分
129
QQ
发表于 2016-2-29 21:49:46 | 显示全部楼层
顶上,按你方法,完全可行,只要注意下面这个换成自己原来的返回按钮。。。谢谢分享
Model.prototype.backBtnClick = function(event){
                this.comp("windowReceiver").windowCancel();
        };
回复 支持 0 反对 1

使用道具 举报

1

主题

4

帖子

27

积分

新手上路

Rank: 1

积分
27
QQ
 楼主| 发表于 2016-1-12 17:44:22 | 显示全部楼层
为什么只能选择未处理,明明是想分享的。。。
回复 支持 反对

使用道具 举报

发表于 2016-3-1 09:58:24 | 显示全部楼层
不同这么麻烦把!windowDialog组件只要设置路由的属性为true 按物理键就可以返回的!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

17

主题

150

帖子

287

积分

中级会员

Rank: 3Rank: 3

积分
287
QQ
发表于 2016-12-9 17:09:59 | 显示全部楼层
liangyongfei 发表于 2016-3-1 09:58
不同这么麻烦把!windowDialog组件只要设置路由的属性为true 按物理键就可以返回的! ...

不行,我试了
回复 支持 反对

使用道具 举报

191

主题

688

帖子

3327

积分

论坛元老

Rank: 8Rank: 8

积分
3327
QQ
发表于 2016-12-10 14:06:31 | 显示全部楼层
本帖最后由 ysk007 于 2016-12-10 14:55 编辑
liangyongfei 发表于 2016-3-1 09:58
不同这么麻烦把!windowDialog组件只要设置路由的属性为true 按物理键就可以返回的! ...

加了路由会改变url地址,仅仅为了实现返回键不想加路由的话还是楼主的方法好。不过测试后发现,如果子窗口再打开子窗口的话,点击一次是能退回的,但是再点击就不能退回了。

轻量化ERP--企业邦  网址:meiprocess.cn
qq:8269301
手机:13801998595
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-24 14:35 , Processed in 0.059901 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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