evalJS代替mui.fire
之前一直用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); });
测试后成功。