1. 程式人生 > 實用技巧 >evalJS代替mui.fire

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

測試後成功。