Проблема, возможно, связана с тем, что Safari на iPhone более строго обрабатывает функцию window.open. В частности, если window.open вызывается не в ответ на пользовательское событие (например, щелчок мыши), Safari может заблокировать всплывающее окно.
Попробуйте использовать встроенную функцию window.location.href для перехода по ссылке в текущем окне, вместо открытия нового окна. Вот пример для функции openWhatsAppLink:
function openWhatsAppLink(url) {
const whatsappLink = `https://api.whatsapp.com/send?text=${encodeURIComponent('Моя корзина в магазине : ' + url)}`;
window.location.href = whatsappLink;
}
Если вам все-таки нужно открывать ссылку в новом окне, убедитесь, что вызов window.open происходит в ответ на пользовательское событие, например, после клика пользователя. В этом случае, ваш текущий код должен работать, но если необходимо изменить, то подобный подход:
$("#shared_wh").on("click", (e) => {
e.preventDefault();
$.post("ajax/share_cart.php", (data) => {
if (data.success) {
openWhatsAppLink(data.url);
} else {
alert('Что-то пошло не так');
}
})
.fail(error => console.log(error))
});
function openWhatsAppLink(url) {
const whatsappLink = `https://api.whatsapp.com/send?text=${encodeURIComponent('Моя корзина в магазине : ' + url)}`;
window.open(whatsappLink, '_blank','noopener');
}
Обратите внимание на то, что window.open вызывается внутри обработчика события щелчка ($("#shared_wh").on("click", ...)).