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

QQ登录

只需一步,快速开始

查看: 9780|回复: 21

[处理中5] 关于安卓手机物理返回键的问题

  [复制链接]

75

主题

486

帖子

862

积分

高级会员

Rank: 4

积分
862
QQ
发表于 2016-4-14 17:09:56 | 显示全部楼层 |阅读模式
我点击了 列表的一个选项 到达一个对应的 详情页;  如果用物理返回键 返回 再点其他选项 还是跳到上一次的详情页 ; 如果不用物理放回键 就不会出现这种问题; 请问我该如何解决; 谢谢了`
发表于 2016-4-14 18:14:10 | 显示全部楼层
请问你的详细页是通过哪种方式打开的??
无论哪种方式,总是要在onParamsReceive 事件中 接收参数的吧!!接收参数然后重新更新data组件的值!就会显示不同的详细页了!

因为这个页面是缓存的!如果没有正真关闭,当然下次还是打开的!如果是在onload中加载的数据!那么下次打开页面肯定不执行这个事件!当然页面就没变化了!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

75

主题

486

帖子

862

积分

高级会员

Rank: 4

积分
862
QQ
 楼主| 发表于 2016-4-15 14:42:54 | 显示全部楼层
liangyongfei 发表于 2016-4-14 18:14
请问你的详细页是通过哪种方式打开的??
无论哪种方式,总是要在onParamsReceive 事件中 接收参数的吧!! ...

onParamsReceive 事件中 接收参数的吧! 对啊 我就这样啊 然后 在data.refrsh()
http://bbs.justep.com/thread-49855-1-1.html
回复 支持 反对

使用道具 举报

75

主题

486

帖子

862

积分

高级会员

Rank: 4

积分
862
QQ
 楼主| 发表于 2016-4-15 14:43:27 | 显示全部楼层
liangyongfei 发表于 2016-4-14 18:14
请问你的详细页是通过哪种方式打开的??
无论哪种方式,总是要在onParamsReceive 事件中 接收参数的吧!! ...

结果还是一样啊 现在还是那样。 郁闷``
http://bbs.justep.com/thread-49855-1-1.html
回复 支持 反对

使用道具 举报

75

主题

486

帖子

862

积分

高级会员

Rank: 4

积分
862
QQ
 楼主| 发表于 2016-4-15 14:43:52 | 显示全部楼层
onload 这个方法 我没写。
http://bbs.justep.com/thread-49855-1-1.html
回复 支持 反对

使用道具 举报

75

主题

486

帖子

862

积分

高级会员

Rank: 4

积分
862
QQ
 楼主| 发表于 2016-4-15 15:38:06 | 显示全部楼层
liangyongfei 发表于 2016-4-14 18:14
请问你的详细页是通过哪种方式打开的??
无论哪种方式,总是要在onParamsReceive 事件中 接收参数的吧!! ...

大哥 有时间吗 ` 有什么可以 捕获物理返回键的吗?
http://bbs.justep.com/thread-49855-1-1.html
回复 支持 反对

使用道具 举报

16

主题

74

帖子

225

积分

中级会员

Rank: 3Rank: 3

积分
225
QQ
发表于 2016-4-15 16:41:04 | 显示全部楼层
这是官方的物理返回键的缺陷,建议修改UI2/system/components/justep/common/utils.js
里的attachDoubleClickExitApp方法,将history.back(); 改为 justep.Shell.closePage();
回复 支持 反对

使用道具 举报

16

主题

74

帖子

225

积分

中级会员

Rank: 3Rank: 3

积分
225
QQ
发表于 2016-4-15 16:42:08 | 显示全部楼层
改完记得执行下tools/dist/dist.bat
回复 支持 反对

使用道具 举报

40

主题

122

帖子

256

积分

中级会员

Rank: 3Rank: 3

积分
256
QQ
发表于 2016-4-17 09:45:35 | 显示全部楼层
fanghao19921124 发表于 2016-4-15 16:41
这是官方的物理返回键的缺陷,建议修改UI2/system/components/justep/common/utils.js
里的attachDoubleCli ...

这个方法有后遗症    当多页面多次点击返回键的时候会报错justep230112
回复 支持 反对

使用道具 举报

16

主题

74

帖子

225

积分

中级会员

Rank: 3Rank: 3

积分
225
QQ
发表于 2016-4-18 11:27:41 | 显示全部楼层
logo 发表于 2016-4-17 09:45
这个方法有后遗症    当多页面多次点击返回键的时候会报错justep230112

修改$UI/system/lib/portal/shell.js,加个判断2次closepage的时间,若小于500ms,则不退出页面,就可以解决多次点击返回键报错了

define(function(require) {
        var $ = require("jquery");
        var lastClickTime = 0;
       
        function checkImpl() {
                if (api.impl) {
                        return true;
                }
                return false;
        }

        function isFastDoubleClick() {
                var timeA = new Date().getTime();
                var timeB = timeA - lastClickTime;
                if (timeB >= 0 && timeB <= 600) {
                        return false;
                }
                lastClickTime = timeA;
                return true;
        }

        function DefaultImpl() {
        }

        DefaultImpl.prototype.noopImpl = function() {
                var dtd = $.Deferred();
                return dtd.promise();
        };

        DefaultImpl.prototype.closePage = function() {
                return window.close();
        };
        var defaultImpl = new DefaultImpl();

        function addShowPage() {
                var dtd = $.Deferred();
                // require('$UI/system/components/justep/windowOpener/windowOpener')
                require([ '$UI/system/components/justep/windowOpener/windowOpener' ], function(WindowOpener) {
                        DefaultImpl.prototype.showPage = function(url, data, options) {
                                if (typeof url === "object") {
                                        var urlParams = [];
                                        var params = url;
                                        url = url.url;
                                        delete params.url;
                                        $.each(params, function(key, value) {
                                                if (key !== "xid" && key !== "extra") {
                                                        if (value !== "undefined" && value !== "" && value !== undefined) {
                                                                urlParams.push(key + "=" + encodeURIComponent(value));
                                                        }
                                                }
                                        });
                                        var urlParamStr = urlParams.join("&");
                                        if (urlParams.length > 0) {
                                                if (url.indexOf("?") != -1) {
                                                        url = url + "&" + urlParamStr;
                                                } else {
                                                        url = url + "?" + urlParamStr;
                                                }
                                        }
                                }
                                var option = {
                                        url : url,
                                        modal : "true",
                                        resizable : "true",
                                        status : "fullscreen"
                                };
                                var opener = new WindowOpener(option);
                                opener.open({
                                        params : data
                                });
                        };
                        dtd.resolve();
                });
                return dtd.promise();
        }
        ;

        var api = {
                loadPage : function() {
                        if (checkImpl()) {
                                return api.impl.loadPage.apply(api.impl, arguments);
                        } else {
                                return defaultImpl.noopImpl();
                        }
                },
                showPage : function() {
                        var args = arguments;
                        if (checkImpl()) {
                                return api.impl.showPage.apply(api.impl, arguments);
                        } else {
                                if (defaultImpl.showPage) {
                                        return defaultImpl.showPage.apply(defaultImpl, arguments);
                                } else {
                                        addShowPage().done(function() {
                                                return defaultImpl.showPage.apply(defaultImpl, args);
                                        })
                                }
                        }
                },
                showLeft : function() {
                        if (checkImpl()) {
                                return api.impl.showLeft.apply(api.impl, arguments);
                        } else {
                                return defaultImpl.noopImpl();
                        }
                },

                showRight : function() {
                        if (checkImpl()) {
                                return api.impl.showRight.apply(api.impl, arguments);
                        } else {
                                return defaultImpl.noopImpl();
                        }
                },

                closePage : function() {
                        if (isFastDoubleClick()) {
                                if (checkImpl()) {
                                        return api.impl.closePage.apply(api.impl, arguments);
                                } else {
                                        defaultImpl.closePage();
                                }
                        }
                },
                setIsSinglePage : function(isSinglePage) {
                        if (checkImpl()) {
                                api.impl.isSinglePage = isSinglePage;
                        }
                },
                getActivePageXid : function() {
                        if (checkImpl()) {
                                return api.impl.getActivePageXid.apply(api.impl, arguments);
                        } else {
                                return "";
                        }
                },
                on : function() {
                        if (checkImpl()) {
                                return api.impl.on.apply(api.impl, arguments);
                        }
                },
                off : function() {
                        if (checkImpl()) {
                                return api.impl.off.apply(api.impl, arguments);
                        }
                },
                fireEvent : function() {
                        if (checkImpl()) {
                                return api.impl.fireEvent.apply(api.impl, arguments);
                        }
                },
                addPageMappings : function() {
                        if (checkImpl()) {
                                return api.impl.addPageMappings.apply(api.impl, arguments);
                        }
                },
                showMainPage : function() {
                        if (checkImpl()) {
                                return api.impl.showMainPage.apply(api.impl, arguments);
                        }
                },
                removeMainPage : function() {
                        if (checkImpl()) {
                                return api.impl.removeMainPage.apply(api.impl, arguments);
                        }
                }
        };
        return api;
});
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-19 07:08 , Processed in 0.089360 second(s), 24 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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