[MUI] mui框架實現頁面間傳值

adolph發表於2019-02-16

1 : 通過MUI封裝的openWindow 方法:

mui.openWindow({
    url:new-page-url,
    id:new-page-id,
    styles:{
      top:newpage-top-position,//新頁面頂部位置
      bottom:newage-bottom-position,//新頁面底部位置
      width:newpage-width,//新頁面寬度,預設為100%
      height:newpage-height,//新頁面高度,預設為100%
      ......
    },
    extras:{
      .....//自定義擴充套件引數,可以用來處理頁面間傳值
    },
    createNew:false,//是否重複建立同樣id的webview,預設為false:不重複建立,直接顯示
    show:{
      autoShow:true,//頁面loaded事件發生後自動顯示,預設為true
      aniShow:animationType,//頁面顯示動畫,預設為”slide-in-right“;
      duration:animationTime,//頁面動畫持續時間,Android平臺預設100毫秒,iOS平臺預設200毫秒;
      event:`titleUpdate`,//頁面顯示時機,預設為titleUpdate事件時顯示
      extras:{}//視窗動畫是否使用圖片加速
    },
    waiting:{
      autoShow:true,//自動顯示等待框,預設為true
      title:`正在載入...`,//等待對話方塊上顯示的提示內容
      options:{
        width:waiting-dialog-widht,//等待框背景區域寬度,預設根據內容自動計算合適寬度
        height:waiting-dialog-height,//等待框背景區域高度,預設根據內容自動計算合適高度
        ......
      }
    }
})

其中:

extras : 新視窗的額外擴充套件引數,可用來處理頁面間傳值;例如:

舊頁面設定:
var webview = mui.openWindow({
    url:`info.html`,
    extras:{
        name:`mui`  //擴充套件引數
    }
});

新頁面:
mui.plusReady(function () {
   var self = plus.webview.currentWebview();
   // 或 var self = plus.webview.getWebviewById(`new`);
   console.log("extras:" + self.targetId);
})

可能的: 
console.log(webview.name);//輸出mui字串 

注意:擴充套件引數僅在開啟新視窗時有效,若目標視窗為預載入頁面,則通過mui.openWindow方法開啟時傳遞的extras引數無效。

參考: http://laopo.cnblogs.com/p/50…


2 : 通過HTML5本地儲存: localStorage、sessionStorage

特性檢測:

    if(window.sessionStorage){
        // OK
    }else{
        // FAIL
    }

參考: http://www.cnblogs.com/firstF…


3 : 利用URL傳參

在頁面跳轉的時候通過設定window.location.href新增引數,在接收引數的頁面通過window.location.search獲取引數字串。

  • 傳送引數的頁面:

window.location.href = `new.html?targetId=123`
  • 接收引數的頁面:

// 獲取url中的引數
function getUrlParam (name) {
     var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
     var r = window.location.search.substr(1).match(reg);
     if (r!= null) {
        return unescape(r[2]);
     }else{
        return null;
     }
}    
//獲取url中的targetId引數
var targetId = getUrlParam(`targetId`);
console.log(targetId);

4 : 其他參考資料:

本文地址: https://segmentfault.com/a/11…

相關文章