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

浏览器兼容性

另见