evalJS代替mui.fire

2023-03-16,,

之前一直用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);
});

测试后成功。

 

evalJS代替mui.fire的相关教程结束。

《evalJS代替mui.fire.doc》

下载本文的Word格式文档,以方便收藏与打印。