Вопрос или проблема
Я создаю мобильное приложение с использованием фреймворка Phoenix, и хочу, чтобы при нажатии пользователем кнопки вызова набирался этот номер.
Вот что я пробовал:
-
<a class="text-zinc-900 text-sm font-medium" href="tel:10000" target="_blank"><%= gettext("10000") %></a>
-
<a class="text-zinc-900 text-sm font-medium" href="tel:10000"><%= gettext("10000") %></a>
3.<a onclick="window.open('tel:10000')" class="external">10000</a>
-
<button class="bg-red-500" id="dial_button" phx-hook="Dial">Позвонить 10000</button>
и в javascript файле
`const Dial ={
mounted(){
const call = document.getElementById(“dial_button”)call.addEventListener("click", function(){ window.location.href = "tel:10000"; })
}
}
export default Dial;`
Пожалуйста, если у вас есть идеи, как я могу сделать это другим способом, дайте мне знать.
Ответ или решение
Проблема, с которой вы столкнулись, связана с ошибкой net::ERR_UNKNOWN_URL_SCHEME
, которая возникает, когда браузер не может распознать указанный URL-адрес. В вашем случае это происходит из-за попытки использовать схему tel:
для инициирования телефонного звонка, что не всегда поддерживается в веб-контексте или для некоторых версий браузеров.
Вот несколько рекомендаций и альтернативных подходов, которые могут помочь вам правильно реализовать функцию совершения звонка в вашем мобильном приложении на основе Phoenix Framework:
-
Используйте правильный HTML-синтаксис:
Убедитесь, что ссылка имеет правильный синтаксис. Например:<a class="text-zinc-900 text-sm font-medium" href="tel:10000">10000</a>
Убедитесь, что в
href
указана правильная форма, и избегайте ошибок синтаксиса, таких как двойные кавычки. -
Используйте JavaScript для обработки события клика:
Ваш текущий подход с JavaScript в целом правильный, но убедитесь, что вы правильно инициализируете и добавляете обработчики событий. Например:<button class="bg-red-500" id="dial_button">Call 10000</button>
В файле JavaScript:
const Dial = { mounted() { const callButton = document.getElementById("dial_button"); callButton.addEventListener("click", function() { window.location.href = "tel:10000"; }); } }; export default Dial;
Убедитесь, что
phx-hook
подключен и что скрипты загружаются корректно. -
Проверьте настройки вашего устройства:
Убедитесь, что ваше устройство или браузер поддерживает вызовы черезtel:
. Некоторые эмуляторы или браузеры на компьютере могут не поддерживать эту функцию. Проверьте на мобильном устройстве. -
Используйте подход с
window.open
:
Вы также можете попытаться использовать методwindow.open()
для вызова, хотя для ссылок на телефоны это может не всегда сработать:callButton.addEventListener("click", function() { window.open("tel:10000"); });
-
Отладка и тестирование:
Попробуйте использовать инструменты разработчика в вашем браузере, чтобы отследить любые ошибки или предупреждения, которые могут помочь понять, почему ссылка не работает. -
Альтернативный подход с использованием фреймворков:
Если вышеперечисленные методы не работают, рассмотрите возможность использования библиотек или плагинов, которые могут упростить взаимодействие с вызовами. Например, библиотеки, которые обеспечивают более надежную маршрутизацию для мобильных приложений.
Если вы следуете указанным рекомендациям и у вас все еще есть трудности, возможно, стоит изучить аналогичные проблемы на форумах разработчиков или в документации к используемым вами технологиям.