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

QQ登录

只需一步,快速开始

查看: 6729|回复: 5

[结贴] 在企业微信中 justep.Shell.closePage();失效的问题

[复制链接]

25

主题

69

帖子

304

积分

中级会员

Rank: 3Rank: 3

积分
304
QQ
发表于 2017-10-20 14:23:31 | 显示全部楼层 |阅读模式
版本: BeX5V3.5 小版本号: 3.6
数据库: Oracle 服务器操作系统: Windows 应用服务器: Tomcat
客户端操作系统: android 4.x 浏览器: 手机/平板X5客户端
目前我们在企业微信中实现了一个待办任务和任务办理的页面,具体思路是这样的:
   1、在企业微信后台配置了一个企业应用,通过工作台应用主页的配置,回调进入到wx_redirectPage_mytask.w页面,在此页面中取得企业微信传过来的code进行身份判别,并进行BeX5的登录操作,登录成功后,自动跳转(用的跳转方式是justep.Shell.showPage,前面还用过window.location.href)到待办任务界面task.m.w(为了保持X5的登录状态我们在打开得页面地址后面加上了参数bsessionid=XXXXX,否则可能在打开得时候会报未登录的错误);
   2、在task.m.w页面中,用户点击一个待办任务,会跳转到该待办任务所对应的页面(用的跳转方式同样是justep.Shell.showPage),例如是myaudio.m.w,在myaudio.m.w页面中办理完相关事务后,用户点击提交按钮,这个时候会触发流程的提交事件,并执行以下代码,触发待办任务列表页面中的刷新待办任务的事件,貌似还会关闭当前的办理页面:
                        justep.Shell.fireEvent("onRefreshUndoTaskData", {
                                "value" : "undo"
                        });
   3、以上task.m.w和myaudio.m.w两个页面的调用方式在app上使用时没有问题的,但是通过1步和2步嵌入到企业微信中貌似就不能成功执行justep.Shell.fireEvent这个代码了,后来我用justep.Shell.closePage()去强行关闭当前页面貌似也不好使,只能通过this.close();来关闭当前页面,但是这样做就没办法在关闭业务办理页面myaudio.m.w的时候,刷新待办任务列表task.m.w中的数据了;
   我的问题是,怎么样才能在企业微信中,在myaudio.m.w页面中让justep.Shell.fireEvent或者justep.Shell.closePage()代码生效呢?

25

主题

69

帖子

304

积分

中级会员

Rank: 3Rank: 3

积分
304
QQ
 楼主| 发表于 2017-10-20 14:25:25 | 显示全部楼层
前面之所以说那么多企业微信的实现过程是因为我怕前面的某一步实现影响到了justep.Shell.closePage()代码的执行了,请各位大侠帮我分析下!
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36115
发表于 2017-10-20 14:49:56 | 显示全部楼层
Shell要在有平台的门户的时候才可以使用,如果没有门户要使用时需要自己创建ShellImpl实例
参考http://docs.wex5.com/shellimpl/
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

25

主题

69

帖子

304

积分

中级会员

Rank: 3Rank: 3

积分
304
QQ
 楼主| 发表于 2017-10-23 09:15:42 | 显示全部楼层
好吧,为了传递参数,我用另外一种方式实现了,解决方式是:
  在待办任务列表中点击任务进入页面的时候,将本页面的刷新动作以参数的形式传入到子页面中  ,代码如下:

                                            var sendparams = {
                                                            url : url,
                                                            title : row.val("sName"),
                                                            executor : options.response || "",
                                                            data: {
                                                                    method:self.refresh
                                                            }
                                            }
                                            justep.Shell.showPage(url, sendparams);


  2、在子页面中需要调用关闭并刷新的地方,写如下代码:
                        this.close();
                        this.params.data.method('undo');
  3、在以上代码中为了不影响以前的刷新逻辑,前面都需要加上if(justep.Browser.isWeChat)的判断条件;
  4、在父页面的“refresh”事件中,要注意this访问的貌似已经不是父页面了,所以这里的this.comp访问组件方式会有问题,需要将这些组件在父页面上提前申明
回复 支持 反对

使用道具 举报

25

主题

69

帖子

304

积分

中级会员

Rank: 3Rank: 3

积分
304
QQ
 楼主| 发表于 2017-10-23 09:16:29 | 显示全部楼层
结贴吧,谢谢
回复 支持 反对

使用道具 举报

72

主题

291

帖子

1158

积分

金牌会员

Rank: 6Rank: 6

积分
1158
QQ
发表于 2017-10-25 16:25:31 | 显示全部楼层
本帖最后由 keyours 于 2017-10-25 16:26 编辑

请问下你的应用在企业微信里面,ios环境下面每次打开后一个页面后,点击返回,主页下面会多一个白框吗?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-3-14 19:22 , Processed in 0.057862 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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