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

QQ登录

只需一步,快速开始

查看: 9225|回复: 31

[结贴] 拦截返回按键的问题。

[复制链接]

26

主题

107

帖子

193

积分

初级会员

Rank: 2

积分
193
QQ
发表于 2016-3-22 13:37:41 | 显示全部楼层 |阅读模式
大家好,我有个问题。
就是我想在页面拦截返回按键,然后做一些事情。比如不用返回按键关闭界面,自己关闭界面。
或者在2次返回退出的时候,添加清理session的工作。

我得代码是这样的。
  1. document.addEventListener("deviceready", function() {
  2.                 var listener = function() {
  3.                         justep.Shell.closePage();//在监听中关闭本页面
  4.                 };
  5.                 document.addEventListener('backbutton', listener, false);
  6.                 $(window).on('beforeunload', function() {
  7.                         document.removeEventListener('backbutton', listener, false);
  8.                 });
  9.         }, false);
复制代码

但是现在提示我。页面已经被关闭 编码:JUSTEP230112.

求解。!


26

主题

107

帖子

193

积分

初级会员

Rank: 2

积分
193
QQ
 楼主| 发表于 2016-3-25 08:50:17 | 显示全部楼层
我实现了,我分享下代码。


  1. CommonUtils
  2.                         .attachDoubleClickExitApp(function() {
  3.                                 var exitDtd = $.Deferred();
  4.                                 if (window.isMain == "main") {

  5.                                         if (exitAppTicker === 0) {
  6.                                                 exitAppTicker++;
  7.                                                 var msg = $(
  8.                                                                 '<span style="display: none;border-radius: 50px;padding: 7px;left: 50%;margin-left: -80px;background-color: #383838;color: #F0F0F0;z-index:9999;position:fixed;bottom:25px;">再按一次退出应用</span>')
  9.                                                                 .appendTo('body');
  10.                                                 msg.fadeIn(400).delay(2000).fadeOut(400, function() {
  11.                                                         exitAppTicker = 0;
  12.                                                         msg.remove();
  13.                                                 });
  14.                                         } else if (exitAppTicker == 1) {
  15.                                                 if (!localStorage.getItem("remeberMe")) {
  16.                                                         localStorage.removeItem("un");
  17.                                                         localStorage.removeItem("pw");
  18.                                                         localStorage.removeItem("remeberMe");
  19.                                                 }
  20.                                                 localStorage.removeItem("userName");
  21.                                                 localStorage.removeItem("companyId");
  22.                                                 localStorage.removeItem("mobile");
  23.                                                 localStorage.removeItem("loginName");
  24.                                                 exitDtd.resolve();
  25.                                                 navigator.app.exitApp();
  26.                                         }

  27.                                         return false;
  28.                                 } else
  29.                                         return false;

  30.                         });
复制代码
回复 支持 反对

使用道具 举报

发表于 2016-3-22 15:03:02 | 显示全部楼层
这个系统已经实现了,
代码是:
/UI2/system/components/justep/common/utils.js
方法:
attachDoubleClickExitApp

你的用法,只需要像外卖案例中那样,接管方法:
CommonUtils.attachDoubleClickExitApp

即可!!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

26

主题

107

帖子

193

积分

初级会员

Rank: 2

积分
193
QQ
 楼主| 发表于 2016-3-22 16:28:12 | 显示全部楼层
liangyongfei 发表于 2016-3-22 15:03
这个系统已经实现了,
代码是:
/UI2/system/components/justep/common/utils.js

我用了外卖的方法,把utils.JS中的代码拷贝过来,用CommonUitls接管,可是报错啊。
回复 支持 反对

使用道具 举报

26

主题

107

帖子

193

积分

初级会员

Rank: 2

积分
193
QQ
 楼主| 发表于 2016-3-22 16:30:01 | 显示全部楼层
Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check http://xhr.spec.whatwg.org/.
TypeError: Cannot read property 'addEventListener' of undefined
    at main.js:141
    at Object.context.execCb (require.2.1.10.js:2199)
    at Object.Module.check (require.2.1.10.js:1208)
    at Object.Module.enable (require.2.1.10.js:1491)
    at Object.Module.init (require.2.1.10.js:1121)
    at callGetModule (require.2.1.10.js:1518)
    at Object.context.completeLoad (require.2.1.10.js:2092)
    at HTMLScriptElement.context.onScriptLoad (require.2.1.10.js:2220)
Error: __justepClientErrorStart__{"code":"JUSTEP230103","message":"加载/x5/UI2/v_708378e5c18349d394bb4604ece30d62l_zh_CNs_d_/v_/SalMobel/main.w?$pageType=model出错"}__justepClientErrorEnd__
    at Object.l.create (http://localhost:8080/x5/UI2/v_80bf96e382cc4cdc80ee8aa7891b673bl_zh_CNs_d_/system/core.min.js:65:215121)
    at Object.<anonymous> (http://localhost:8080/x5/UI2/v_80bf96e382cc4cdc80ee8aa7891b673bl_zh_CNs_d_/system/core.min.js:65:278418)
    at f (http://localhost:8080/x5/UI2/v_80bf96e382cc4cdc80ee8aa7891b673bl_zh_CNs_d_/system/core.min.js:65:42352)
    at Object.l.fireWith (http://localhost:8080/x5/UI2/v_80bf96e382cc4cdc80ee8aa7891b673bl_zh_CNs_d_/system/core.min.js:65:43177)
    at Object.<anonymous> (http://localhost:8080/x5/UI2/v_80bf96e382cc4cdc80ee8aa7891b673bl_zh_CNs_d_/system/core.min.js:65:43858)
    at f (http://localhost:8080/x5/UI2/v_80bf96e382cc4cdc80ee8aa7891b673bl_zh_CNs_d_/system/core.min.js:65:42352)
    at Object.l.fireWith (http://localhost:8080/x5/UI2/v_80bf96e382cc4cdc80ee8aa7891b673bl_zh_CNs_d_/system/core.min.js:65:43177)
    at Object.i.(anonymous function) [as reject] (http://localhost:8080/x5/UI2/v_80bf96e382cc4cdc80ee8aa7891b673bl_zh_CNs_d_/system/core.min.js:65:44157)
    at Object.errback (http://localhost:8080/x5/UI2/v_80bf96e382cc4cdc80ee8aa7891b673bl_zh_CNs_d_/system/core.min.js:65:274500)
    at http://localhost:8080/x5/UI2/v_5c4bfa7c288b4dbd9453fc0d63c7feabl_zh_CNs_d_/system/lib/require/require.2.1.10.js:398:23
Uncaught Error: __justepClientErrorStart__{"code":"JUSTEP230103","message":"加载/x5/UI2/v_708378e5c18349d394bb4604ece30d62l_zh_CNs_d_/v_/SalMobel/main.w?$pageType=model出错"}__justepClientErrorEnd__

报错信息
回复 支持 反对

使用道具 举报

26

主题

107

帖子

193

积分

初级会员

Rank: 2

积分
193
QQ
 楼主| 发表于 2016-3-22 17:01:24 | 显示全部楼层
这是我重写的代码。
  1. CommonUtils.document
  2.                         .addEventListener(
  3.                                         "deviceready",
  4.                                         function() {
  5.                                                 var exitAppTicker = 0;
  6.                                                 var listener = function() {
  7.                                                         if (conditionFn()) {
  8.                                                                 if (exitAppTicker === 0) {
  9.                                                                         exitAppTicker++;
  10.                                                                         var msg = $(
  11.                                                                                         '<span style="display: none;border-radius: 50px;padding: 7px;left: 50%;margin-left: -80px;background-color: #383838;color: #F0F0F0;z-index:9999;position:fixed;bottom:25px;">再按一次退出应用</span>')
  12.                                                                                         .appendTo('body');
  13.                                                                         msg.fadeIn(400).delay(2000).fadeOut(400, function() {
  14.                                                                                 exitAppTicker = 0;
  15.                                                                                 msg.remove();
  16.                                                                         });
  17.                                                                 } else if (exitAppTicker == 1) {

  18.                                                                         if (!localStorage.getItem("remeberMe")) {
  19.                                                                                 localStorage.removeItem("un");
  20.                                                                                 localStorage.removeItem("pw");
  21.                                                                                 localStorage.removeItem("remeberMe");
  22.                                                                         }
  23.                                                                         localStorage.removeItem("userName");
  24.                                                                         localStorage.removeItem("companyId");
  25.                                                                         localStorage.removeItem("mobile");
  26.                                                                         localStorage.removeItem("loginName");

  27.                                                                         exitDtd.resolve();
  28.                                                                         navigator.app.exitApp();
  29.                                                                 }
  30.                                                         } else {
  31.                                                                 justep.Shell.closePage();
  32.                                                                 // history.back();
  33.                                                         }
  34.                                                 };
  35.                                                 document.addEventListener('backbutton', listener, false);
  36.                                                 $(window).on('beforeunload', function() {
  37.                                                         document.removeEventListener('backbutton', listener, false);
  38.                                                 });
  39.                                         }, false);
复制代码


我加入了退出时候清楚本地存储。
回复 支持 反对

使用道具 举报

发表于 2016-3-22 17:56:10 | 显示全部楼层
路小佳 发表于 2016-3-22 16:28
我用了外卖的方法,把utils.JS中的代码拷贝过来,用CommonUitls接管,可是报错啊。 ...

你不需要重新这些方法啊!
直接在attachDoubleClickExitApp 的回调方法中写这些代码!
然后return true 就表示退出!

if条件判断是表示在哪个页面的时候退出的!一般是指首页才执行!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

26

主题

107

帖子

193

积分

初级会员

Rank: 2

积分
193
QQ
 楼主| 发表于 2016-3-23 08:20:53 | 显示全部楼层
liangyongfei 发表于 2016-3-22 17:56
你不需要重新这些方法啊!
直接在attachDoubleClickExitApp 的回调方法中写这些代码!
然后return true 就 ...
  1.         CommonUtils.attachDoubleClickExitApp(function() {
  2.                 if (this.comp('contents').getActiveIndex() === 0) {
  3.                         if (!localStorage.getItem("remeberMe")) {
  4.                                 localStorage.removeItem("un");
  5.                                 localStorage.removeItem("pw");
  6.                                 localStorage.removeItem("remeberMe");
  7.                         }

  8. 在 === 0  中写我要输入的代码吗。 我现在没法用真机测试返回按键。
  9.                         localStorage.removeItem("userName");
  10.                         localStorage.removeItem("companyId");
  11.                         localStorage.removeItem("mobile");
  12.                         localStorage.removeItem("loginName");
  13.                         return true;
  14.                 }
  15.                 return false;
  16.         });
复制代码
回复 支持 反对

使用道具 举报

26

主题

107

帖子

193

积分

初级会员

Rank: 2

积分
193
QQ
 楼主| 发表于 2016-3-23 08:40:21 | 显示全部楼层
liangyongfei 发表于 2016-3-22 17:56
你不需要重新这些方法啊!
直接在attachDoubleClickExitApp 的回调方法中写这些代码!
然后return true 就 ...
  1.         CommonUtils.attachDoubleClickExitApp(function() {
  2.                 if (this.comp('contents').getActiveIndex() === 0) {
  3.                         if (!localStorage.getItem("remeberMe")) {
  4.                                 localStorage.removeItem("un");
  5.                                 localStorage.removeItem("pw");
  6.                                 localStorage.removeItem("remeberMe");
  7.                         }

  8. 在 === 0  中写我要输入的代码吗。 我现在没法用真机测试返回按键。
  9.                         localStorage.removeItem("userName");
  10.                         localStorage.removeItem("companyId");
  11.                         localStorage.removeItem("mobile");
  12.                         localStorage.removeItem("loginName");
  13.                         return true;
  14.                 }
  15.                 return false;
  16.         });
复制代码
回复 支持 反对

使用道具 举报

26

主题

107

帖子

193

积分

初级会员

Rank: 2

积分
193
QQ
 楼主| 发表于 2016-3-23 09:01:55 | 显示全部楼层

我测试了,不好用啊,都没被清除掉。localstorage
回复 支持 反对

使用道具 举报

26

主题

107

帖子

193

积分

初级会员

Rank: 2

积分
193
QQ
 楼主| 发表于 2016-3-23 10:59:25 | 显示全部楼层
  1. CommonUtils.attachDoubleClickExitApp(function() {
  2.        
  3.                 localStorage.removeItem("un");
  4.                 localStorage.removeItem("pw");
  5.                 localStorage.removeItem("remeberMe");
  6.                 localStorage.removeItem("userName");
  7.                 localStorage.removeItem("companyId");
  8.                 localStorage.removeItem("mobile");
  9.                 localStorage.removeItem("loginName");
  10.                
  11.                 return true;
  12.         });
复制代码



我返回真啊,为啥这些localstorge都不清除呢。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-17 15:48 , Processed in 0.105311 second(s), 25 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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