PaymentRequestEvent: openWindow() 方法

可用性有限

此特性不是基線特性,因為它在一些最廣泛使用的瀏覽器中不起作用。

實驗性: 這是一項實驗性技術
在生產中使用此技術之前,請仔細檢查瀏覽器相容性表格

注意:此功能僅在 Service Workers 中可用。

openWindow() 方法是 PaymentRequestEvent 介面的一部分,它會在新視窗中開啟指定的 URL,但前提是該 URL 與呼叫頁面具有相同的源。該方法返回一個 Promise,該 Promise 解析後會返回一個指向 WindowClient 的引用。

語法

js
openWindow(url)

引數

url

要在新視窗中開啟的 URL。它必須與呼叫頁面具有相同的源。

返回值

一個 Promise,該 Promise 解析後會返回一個指向 WindowClient 的引用。

示例

js
self.addEventListener("paymentrequest", async (e) => {
  // …
  // Retain a promise for future resolution
  // Polyfill for PromiseResolver at link below.
  resolver = new PromiseResolver();

  // Pass a promise that resolves when payment is done.
  e.respondWith(resolver.promise);
  // Open the checkout page.
  try {
    // Open the window and preserve the client
    client = await e.openWindow(checkoutURL);
    if (!client) {
      // Reject if the window fails to open
      throw new Error("Failed to open window");
    }
  } catch (err) {
    // Reject the promise on failure
    resolver.reject(err);
  }
});

有關此用法的更多詳細資訊,請參閱 開啟支付處理程式視窗以顯示基於 Web 的支付應用程式前端

規範

規範
Payment Handler API
# dom-paymentrequestevent-openwindow

瀏覽器相容性

另見