evalJS代替mui.fire
阿新 • • 發佈:2020-09-21
之前一直用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 // }); varself = plus.webview.currentWebview(); plus.webview.hide(self); plus.webview.close(self); });
測試後成功。