Спасибо за включение jsfiddle.
Причина, по которой он не работает, заключается в том, что Google Pay пытается открыть всплывающее окно, когда вы вызываете loadPaymentData
в Safari. Когда новое окно запускается в результате события щелчка (действие, инициированное пользователем), всплывающее окно открывается должным образом. Когда он запускается действием, не инициированным пользователем, Google Pay загружается в то же окно, что приводит к его сбою.
Похоже, когда вы делаете запрос ajax в обработчике кликов и затем вызовите loadPaymentData
, Safari считает это действие, не инициированное пользователем.
Посмотрите следующий пример в Safari:
const ajaxButton = document.getElementById('ajax');
const nojaxButton = document.getElementById('nojax');
ajaxButton.addEventListener('click', event => {
$.get('/echo/json/', () => {
window.open('about:blank');
});
});
nojaxButton.addEventListener('click', event => {
window.open('about:blank');
});
Я бы рекомендовал избегать любые HTTP-вызовы для события нажатия кнопки до loadPaymentData
. Если вы можете получить данные до нажатия кнопки, сделайте это.
Из интереса, какие данные вы получаете?