Проявление
Не так давно компания Mozilla анонсировала версию Firefox, со встроенным блокировщиком отслеживающих скриптов и метрик. Как известно, WhatsApp принадлежит компании Facebook, которая является крупнейшим "сборщиком" данных, для рекламных целей, и чаты WhatsApp (зашифрованы, ага...) так же сканируются, для подбора релевантной рекламы. Сканирование происходит через скрипты сбора данных, которые, в общем, называются fingerprint (отпечаток пальца). Так вот Firefox беспощадно "рубит" эти скрипты, Facebok всячески пытается их обойти. В данном случае - фингерпринт вшит непосредственно в скрипт инициализации чата. При переходе по ссылке, типа https://wa.me/70007771122 , WhatsApp упорно пытается перенаправить нас в приложение, по ссылке whatsapp://send/?phone=70007771122, которая отработает корректно только в том случае, если на компьютере клиента установлен клиент WhatsApp. Если клиента нет - пользователь просто получит ошибку "Неизвестный тип адреса" и это будет не очень приятно.
Почему?
При переходе по ссылке на чат ватсаппа, загружается скрипт, который должен проверить, есть ли на устройстве пользователя приложение WhatsApp и, при обнаружении, перенаправить пользователя в него. Но Facebook не может сидеть "тихо" и, параллельно с проверкой приложения, он быстренько начинает собирать информацию о пользователе и его устройстве. Доблестный Firefox замечает это и "бьёт линейкой по пальцам" скрипту, тот, в недоумении, прекращает свою работу и просто отправляет пользователя в приложение (и не важно, что его нет - ставь, если хочешь пообщаться), где никто не будет препятствовать Фейсбуку собирать данные о клиенте.
А как же другие браузеры?
В других браузерах WhatsApp открывается нормально! Точнее, нормально он открывается в Google Chrome и Microsoft Edge (Safari я не проверял). А вот в Internet Explorer, при открытии WhatsApp, выскакивает окно, с запросом на подтверждение доступа к компьютеру, со стороны ватсаппа. Таким образом, IE блокирует работу скрипта, пока пользователь сам не даст разрешение на доступ. Если пользователь решит отказать ватсаппу, то тот просто откроет web-версию месенджера.
И что делать?
На данный момент нет 100%-работающего способа, как исправить ошибку с переходом в WhatsApp по ссылке, с сайта. На StackExchange предлагают отключить блокировку отслеживающих скриптов или сбросить настройки браузера, в Firefox - https://webapps.stackexchange.com/questions/95823/whatsapp-web-does-not-work-on-firefox. Но этот способ ужасен, потому что пользователь никогда не полезет настраивать свой браузер, ради кнопочки, на каком-то сайте. пользователь, скорее, просто закроет сайт и пойдёт искать другой.
Решение
Я предлагаю более щадящее решение. Достаточно просто скрыть ссылку на ватсапп, для пользователей Firefox и показать им просто номер телефона, с подписью "WhatsApp". Для определения браузера можно использовать приведенный ниже код, а логику скрытия и отображения придётся дописывать под проекты.
(function() {
if (navigator.userAgent.indexOf('Firefox') !== -1 &&
!navigator.userAgent.match(
/(iPad)|(iPhone)|(iPod)|(android)|(webOS)/i)) {
//Тут код, который отработает только на Desktop-версии браузера Firefox
}
})();