半杯可乐
半杯可乐
  • 发布:2014-12-19 16:44
  • 更新:2015-01-06 22:04
  • 阅读:4855

入口页面为登录页面,登录成功后,打开的新页面无法监听backbutton事件?

分类:HTML5+

入口页面为登录页面,登录成功后,打开的新页面无法监听backbutton事件?
无论是在主页面还是在子页面都无法监听backbutton事件,点击设备返回键后,退回到入口页面。
Hbuilder 版本:4.8.1.201412182433
MUI版本 :v0.9.0
设备型号:GT-I9100
Android 版本:4.1.2
小米系统MIUI版本 :MIUI-4.8.8

入口页面能正常监听backbutton事件。
登录之后,打开其他页面(主页面、子页面),监听backbutton无效,keydown有效。
监听代码如下:

```javascript  
mui.plusReady(function(){  
     plus.key.addEventListener('backbutton',function(){  
		if(confirm('确定退出吗?')){  
			plus.runtime.quit();  
		}  
	},false);  
})
2014-12-19 16:44 1 条评论 负责人:无 分享
已邀请:
tzheng517

tzheng517

你按照下面的方法做个尝试:
1、入口页改成你的webview模式的页面(含nav标签的);
2、在webview模式的选项卡页面带(nav)标签的页面的plusready方法里在通过create创建webview方式添加你的登录页面。
同时在此页面的init方法里改成如下方式:

                      mui.init({  
				swipeBack: false,  
				keyEventBind: {  
					backbutton: false  
				}  
			});

创建登录页面写法如下:

                    mui.plusReady(function() {  
  
				plus.navigator.closeSplashscreen();  
				var self = plus.webview.currentWebview();  
  
				for (var i = 0; i < 4; i++) {  
					var sub = plus.webview.create(subpages[i], subpages[i], subpage_style);  
					if (i > 0) {  
						sub.hide();  
					}  
					self.append(sub);  
				}  
				//创建完选项卡的subpage后,添加登录页面吗,登录页面样式是占满全屏  
				var initView = plus.webview.create('login.html', 'login.html', {  
					top: '0px',  
					bottom: '0px'  
				});  
				self.append(initView);  
			});  

3、登录成功,关闭登录的webview即可。

  • 半杯可乐 (作者)

    谢谢您的帮助,我先尝试下。


    2014-12-24 14:44

  • 半杯可乐 (作者)

    这样会出现一个问题,先创建的子页面,子页面要加载数据,但是还没有登录,数据获取不到,页面容易加载失败,并且先加载子页面,出现tab后才出现登录页面。


    2015-01-19 09:06

旧情

旧情

没看懂

  • tzheng517

    没看懂 你请求远程给我,我给你看看?


    2014-12-23 10:33

DCloud_UNI_CHB

DCloud_UNI_CHB

感谢 @tzheng517 的热情帮忙;

提醒楼主,如果要重写返回逻辑,参考MUI开发注意事项中,绝对不能通过添加监听事件的方式处理,而要重写mui.back方法。

  • 这个mui.back 在有些页面有效,有些无效返回到上一界面,怎么会这样?

    mui.back = function(){

    }

    这样写的,什么也不处理。


    2015-01-07 11:46

  • DCloud_UNI_CHB

    mui 1.0版本之后,只需要将mui.back写在父页面中即可;写在子页面无效;


    2015-01-07 11:54

  • 这个父页面是不是指启动页了?


    2015-01-07 13:56

  • DCloud_UNI_CHB

    父页面、子页面的概念,参考:http://dcloudio.github.io/mui/javascript/#subpage


    2015-01-07 21:29

梁

楼主解决了没有,我也遇到这样的问题,求分享?

  • tzheng517

    你可以把代码发给我,我给你看看


    2015-01-06 22:29

  • 感谢@1822 的帮忙,我按你上面的方法试了下,可以解决。

    不过又有个新要求,选项卡页面的内容是根据登录用户来初始化的?

    这个有什么方法可以刷新选项卡页面的内容?


    2015-01-07 11:43

  • tzheng517

    1、在你的main.html里添加一个js方法控制显示哪些页面的逻辑。

    2、登录成功后,通过webview的evaljs方法来调用你的main.html里的js方法。


    2015-01-07 11:49

  • 感谢@1822

    登录成功后执行 mui.currentWebview.close();

    eval方法什么时候会被调用呢?有没有示例看一看呢?


    2015-01-07 15:49

  • tzheng517

                                                //通过webviewid获取webview对象  
    var mainView = plus.webview.getWebviewById('webviewid');
    //通过webview的evalJS调用webview里的js方法
    mainView.evalJS("你的js方法()");
    plus.webview.currentWebview().close();

    2015-01-07 15:55

  • 终于可以了,非常谢谢@1822 !


    2015-01-07 16:47

该问题目前已经被锁定, 无法添加新回复