为乐而来
为乐而来
  • 发布:2016-08-31 18:03
  • 更新:2017-12-20 17:14
  • 阅读:16324

关于页面返回刷新上级页面,mui.back刷新上级页面的一个设想

分类:MUI
mui

比如有list.html 通过openwindow跳到detail.html页面

这时候detail.html通过mui.bak()返回要刷新list.html页面,这个可以通过webview.reload()这个我知道的,

但是有时候这时候list.html其实是分页的通过加载更多页面显示有别的很多数据,当然有可能还有别的操作,这样用webview.reload()会刷新整个list.html这样不能完成需求。。
不知道是不是可以用过webview获取到list.html页的js的windows对象,,

比如可以detail.html页mui.back()前这样写

var list = plus.webview.getWebviewById('list.html');  
var listwindow=list.getwindow();  
listwindow.document.getElementById("list页的dom id")  
//还可以调用list.html页的js方法...........

或者调用这个页的方法和iframe子父页一样

不知道是否能完成这样的功能。。但然要是不行,当我瞎扯淡。。。。

2016-08-31 18:03 负责人:无 分享
已邀请:
赵梦欢

赵梦欢 - 专注前端,乐于分享!

你想获取list某个对象干嘛,直接返回的时候给list发个消息,所有的dom操作在自定义事件里面不就可以实现你说的这个。

Trust

Trust - 少说废话

关于返回上一级页面,并刷新上一级页面,通常使用自定义事件来完成。
以重写mui.back()方法为例
当前页面

var old_back = mui.back;  
mui.back = function() {  
    // 获取目标口窗口对象  
    var target = plus.webview.getWebviewById('目标口窗口对象的id');  
    // 执行相应的事件  
    mui.fire(target, 'customEvent', {});  
    // 执行关闭  
    old_back();  
};  

上一级页面(目标窗口)

window.addEventListener('customEvent', function(event) {  
    // mui.fire()传过来的额外的参数,在event.detail中;  
    var detail = event.detail;  
    // var param = detail.param;  
    // 执行相应的ajax或者操作DOM等操作  
});  
4***@qq.com

4***@qq.com

这个简单啊,用fire也可以啊,不用获取dom对象

1***@qq.com

1***@qq.com - 程序员

编辑资料之后,点击保存,然后关闭当前页面,返回上一页,并且刷新上一页,这个怎么解决?

  • w***@163.com

    你的这个问题解决了吗?我现在也有这个需求,但是不知道怎么解决?

    2017-10-20 00:19

海带

海带

  1. 在子页面初始化时,注册beforeback方法;

mui.init({
beforeback: function() {
   //获得父页面的webview
var list = plus.webview.currentWebview().opener();
   //触发父页面的自定义事件(refresh),从而进行刷新
mui.fire(list, 'refresh');
//返回true,继续页面关闭逻辑
return true;
}
});

2.在父页面中添加事件监听:

window.addEventListener('refresh', function(e){//执行刷新
location.reload();
});

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