全部產品
Search
文件中心

Mobile Platform as a Service:開啟新頁面

更新時間:Jul 23, 2024

pushWindow 用於在同一個離線包內開啟一個新的頁面,開啟時內建系統轉場動畫。若您需要跨 appId 開啟其他離線應用頁面,請使用 startApp 介面。

pushWindow 與前端 location.href 的區別,類似於 PC 瀏覽器的新開標籤頁,每個 window 都是一個新的標籤頁,因此原頁面僅僅是被壓到後台,狀態始終保持,JS 也會繼續運行。

pushWindow 介面的使用方法

// 開啟淘寶首頁,自動讀取 title,並且去除右邊功能表按鈕
AlipayJSBridge.call('pushWindow', {
  url: 'https://m.taobao.com/',   // 要開啟頁面的 URL
  // 開啟頁面的配置參數
  param: {
    readTitle: true,              //自動讀取 title
    showOptionMenu: false         // 隱藏右邊菜單
  },
  // 用於給新開的頁面傳遞參數,可選
  // 在新開的頁面使用 AlipayJSBridge.startupParams 可以擷取到 passData
  passData: {
    key1: "key1Value",
    key2: "key2Value"
  }
});
重要
  • 對於 Android 應用,需要將參數放在 param: { } 中。

  • 對於 iOS 應用,則需要將參數放在 passData: { } 中。

程式碼範例

  • 開啟淘寶首頁,去除右邊菜單。

    <h1>開啟淘寶首頁</h1>
    <a class="btn J_demo">執行</a>
    <script>
    function ready(callback) {
      // 如果 jsbridge 已經注入則直接調用
      if (window.AlipayJSBridge) {
          callback && callback();
      } else {
          // 如果沒有注入則監聽注入的事件
          document.addEventListener('AlipayJSBridgeReady', callback, false);
      }
    }
    ready(function(){
      document.querySelector('a').addEventListener('click', function() {
          // 開啟淘寶首頁,自動讀取 title,並且去除右邊菜單
          AlipayJSBridge.call('pushWindow', {
              url: 'https://m.taobao.com/',
              param: {
                  readTitle: true,
                  showOptionMenu: false
              }
          });
      });
    });
    </script>
  • 開啟時設定透明標題列。

    <h1>開啟淘寶首頁</h1>
    <a class="btn J_demo">執行</a>
    <script>
    function ready(callback) {
    // 如果 jsbridge 已經注入則直接調用
    if (window.AlipayJSBridge) {
      callback && callback();
    } else {
      // 如果沒有注入則監聽注入的事件
      document.addEventListener('AlipayJSBridgeReady', callback, false);
    }
    }
    ready(function() {
    document.querySelector('a').addEventListener('click', function() {
      AlipayJSBridge.call('pushWindow', {
        url: 'https://m.taobao.com',
        param: {
          transparentTitle: 'auto'
        }
      });
    });
    });
    </script>

API 說明

重要
  • pushWindow 開啟 URL 頁面的時候不會關閉已經存在的頁面,注意開啟的數量,不要同時開太多而影響效能。

  • 建議同一個應用 pushWindow 的層級不要超過 5 層,否則會影響使用者體驗而且有可能導致應用崩潰。

AlipayJSBridge.call('pushWindow', {
    url, param, passData
})

入參

名稱

類型

描述

必選

預設值

url

string

要開啟的 URL。

Y

“”

param

dictionary

支援的 key/value 對下面的表格。

N

{}

passData(僅適用於 iOS)

dictionary

傳遞的參數,開啟頁面使用 AlipayJSBridge.startupParams 擷取。

N

{}

param 參數詳解

名稱

類型

描述

預設值

defaultTitle

string

預設標題,在頁面第一次載入之前顯示在標題列上。

“”

showLoading

bool

是否在頁面載入前顯示全域菊花。

false

readTitle

bool

是否讀取網頁標題顯示在 titleBar 上。

true

pullRefresh

bool

是否支援下拉重新整理只有本地檔案允許設定為 true。

false

allowsBounceVertical

bool

頁面是否支援縱向拽拉超出實際內容,Android 只支援下拉(顯示出背景或者網域名稱)。只有 .alipay.com/.alipay.net/ 本地檔案允許設定為 false。

true

bounceTopColor

int

下拉超出時,頂部間隙顏色(十進位,例如:bc=16775138)。

-

showTitleLoading

bool

是否在 TitleBar 的標題左邊顯示小菊花。

false

transparentTitle

string

不能與 titleBarColor 同時使用。always/auto:

1、always:當前頁面上下滾動時,titlebar 一直全透明。

2、auto:當頁面往下滾動時,透明度不斷增加,直到 80 pt 時變成完全透明,此時頁面再往上滾動則反之,透明度不斷減小直到回到頂部時變成完全不透明。

3、none:如果這個頁面不需要透明效果,則需要用 pushWindowparam 參數重新指定 transparentTitle 為“none”。

-

titleBarColor

int

自訂 titlebar 的背景色(十進位,例如:bc=16775138)。

重要

不能與 transparentTitle 同時使用。

-

scrollDistance

int

transparentTitle 為 auto 的情況下,滑動到透明度為 0.96 的距離。

80(iOS)

titleImage

string

所要使用的 title 圖片地址,請上傳一張 3X PNG 圖,隻影響當前的 VC,pushWindow 不會自動傳遞此參數,為了更好的體驗可以把圖放在全域營運資源套件中。

“”

closeCurrentWindow

bool

開啟視窗的同時,關閉當前視窗。

false

closeAllWindow

bool

開啟視窗的同時,關閉當前 App 的所有視窗。

false

animationType

string

動畫類型,預設為 “push”,可用枚舉 “none”/“push”。

重要

Android 未實現,均無動畫。

“”

pushWindow 參數預設繼承

名稱

繼承

備忘

url

Y

-

defaultTitle

Y

-

backBehavior

Y

優先使用者指定,否則 pop。

showLoading

Y

-

readTitle

Y

-

pullRefresh

Y

-

toolbarMenu

Y

-

showProgress

Y

-

defaultSubtitle

Y

-

backgroundColor

Y

-

canPullDown

Y

-

showOptionMenu

Y

-

showTitleLoading

Y

-

showDomain

Y

-

pushWindow 和 location.href 的區別

您可以根據以下內容理解 pushWindowlocation.href 的區別:

  • 首先把 Nebula 容器理解為一個 PC 瀏覽器。

  • window 可以理解為標籤頁,location.href 就是正常的標籤跳轉。

  • pushWindow 實際上就是新開了一個標籤頁,並且把之前那一頁壓到下面,push 出來的這頁放在頂層展現。此時被壓到下面的上一頁所有狀態均保留。

  • location.href 就是依然停留在這個標籤頁,直接做頁面跳轉。

  • 當 pushWindow 出來的標籤頁被關閉(pop)時,如果之前還有 window 存在,那麼之前那個 window 就會恢複顯示,並觸發 resume