今天,我爱模板网是 mui 的 webview 做一个页面跳转,从一个页面跳转到另一个页面,这两个页面看似都“嵌套”在index.html页面中。而 webview 我们都喜欢将首尾分离。所以,从一个页面跳转到另一个页面,自然要改变index.html的首尾效果。于是我想到了自定义事件的传参,传递给index.html。我需要获取index.html这个窗口,于是我在准备跳转的页面写了下面的代码:
var mainWv = plus.webview.currentWebview().parent();
mui.fire(mainWv,"changeTit",{
tit:"首页"
})
然后我在index.html写了下面的侦听事件:
window.addEventListener("changeTit",function(e){
mui(".mui-title")[0].innerText = e.detail.tit;
})
我发现首页根本侦听不到,但代码看似没问题啊。看了这篇文章:
js中opener与parent的区别详细解析,准备跳转的那个页面获取的mainWv根本没效果,因为我用了 "currentWebview().opener()"的方式来获取index.html窗口,但是它和即将要跳转的页面根本不是父子关系,
这个跳转的页面是从首页用“show()”方法显示的,用“show()”方法显示和“mui.openWindow”都不能产生父子关系,除非将一个页面“append”到另一个页面才能产生父子关系。所以,不能用parent,而应该用opener。更改代码如下,就有效果了:
var mainWv = plus.webview.currentWebview().opener();