之前一直用mui.fire调用自定义事件以达到监听目标窗口的目的。
页面为双webview,页面跳转时
mui.openWindow({
url: '../choose/food-choose-content.html',
id: 'food-choose.html',
show: {
autoShow: false
}
})
;目标页
window.onload = function() {
mui.plusReady(function() {
plus.nativeUI.closeWaiting();
mui.currentWebview.show("slide-in-right", 300);
});
};
但是最近客户反馈发现,如果在目标页停留时间过长,mui.fire失效。官方文档也没有给出解决方案。之后我发现WebviewObject中有个evalJS
,可在Webview窗口中执行JS脚本。
var detailPage = null;
document.getElementById("savefood").addEventListener('tap',function(){
var data=$.JSONToString(foodArray.reverse());
localStorage.setItem("foodData", data);
if (!detailPage) {
detailPage = plus.webview.getWebviewById('apply_content');
}
detailPage.evalJS('bindfoodlist();');//跳转页中定义bindfoodlist方法
//console.log(detailPage.isPause);
// mui.fire(detailPage, 'bindfoodlist', {
// foodData: data
// });
var self = plus.webview.currentWebview();
plus.webview.hide(self);
plus.webview.close(self);
});
测试后成功。