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);
    });

测试后成功。

 

posted @ 2020-09-21 16:40  艺洁  阅读(201)  评论(0编辑  收藏  举报