PaymentRequest: свойство shippingOption
Безопасный контекст: Данная функция доступна только в безопасных контекстах (HTTPS), в некоторых или всех поддерживающих браузерах.
Устаревшая функция: Данная функция больше не рекомендуется. Несмотря на то, что некоторые браузеры могут её поддерживать, она может быть уже удалена из соответствующих веб-стандартов, может быть в процессе удаления или поддерживаться только для совместимости. Избегайте её использования и обновите существующий код, если это возможно; обратитесь к таблице совместимости в нижней части этой страницы для принятия решения. Имейте в виду, что эта функция может перестать работать в любое время.
Нестандартная функция: Данная функция не является стандартной и не находится на пути стандартизации. Не используйте её на производственных сайтах, взаимодействующих с Вебом: она не будет работать для каждого пользователя. Также могут существовать значительные различия в реализации, и поведение может измениться в будущем.
Чтение-только свойство shippingOption интерфейса PaymentRequest возвращает либо идентификатор выбранного варианта доставки, null (если не было выбрано ни одного варианта доставки), либо выбранный пользователем вариант доставки. По умолчанию null, когда не указаны выбранные варианты доставки.
Это свойство заполняется только в том случае, если конструктор вызывается с флагом requestShipping установленным в значение true. Если requestShipping было false (или отсутствовало), shippingOption возвращает null, даже если разработчик предоставляет выбранный вариант доставки.
Значение
Примеры
В примере ниже генерируются события shippingaddresschange и shippingoptionchange. В каждом случае вызывается updateDetails(), одно с использованием промиса, а другое — с обычным объектом JavaScript. Это демонстрирует синхронное и асинхронное обновление платежной страницы.
const request = new PaymentRequest(methodData, details, options);
// Async update to details
request.onshippingaddresschange = (ev) => {
ev.updateWith(checkShipping(request));
};
// Sync update to the total
request.onshippingoptionchange = (ev) => {
const shippingOption = shippingOptions.find(
(option) => option.id === request.id,
);
const newTotal = {
currency: "USD",
label: "Total due",
value: calculateNewTotal(shippingOption),
};
ev.updateWith({ ...details, total: newTotal });
};
async function checkShipping(request) {
try {
const json = request.shippingAddress.toJSON();
await ensureCanShipTo(json);
const { shippingOptions, total } = await calculateShipping(json);
return { ...details, shippingOptions, total };
} catch (err) {
return { ...details, error: `Sorry! we can't ship to your address.` };
}
}
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome для Android | Firefox для Android | Opera для Android | Safari для iOS | Samsung Internet | WebView для Android | |
shippingOption |
60 | 15 | 55 | 47 | 11.1 | 53 | Нет | 44 | 11.3 | 6.0 | Нет |
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/PaymentRequest/shippingOption