#javascript #html #ios #web-applications
#javascript #HTML #iOS #веб-приложения
Вопрос:
Предыдущее / рабочее состояние:
Javascript извлекал некоторые простые значения даты / времени из HTML-формы и устанавливал строку "whatsapp://send?text=" encodeURIComponet(str)
в качестве href a
элемента.
На iOS я открыл ссылку в Safari, выбрал «Закладки» -> «Добавить на главный экран». Все работало, т.Е. При нажатии «Go» запускался javascript, извлекались значения, сгенерированная строка, а затем Safari автоматически перенаправлялся в приложение Whatsapp со списком контактов, которые можно выбрать для сообщения, а также ссылка на общий доступ работала при нажатии вручную.
href.value = whatsapp://send?text=Apr-21: Dav OUT at 07:19pm
После того, как я обновил iPhone 8 до последней версии iOS 12.2 три дня назад:
Та же настройка, но теперь после нажатия кнопки «Перейти» Safari отображает следующий URL-адрес в адресной строке / строке состояния и показывает белую страницу
Safari cannot open the page because it
cannot redirect to locations starting
with "whatsapp:"
Ручной щелчок и element.click () оба приводят к вышеуказанной ошибке. То же самое, что и в браузере iOS Chrome или iOS Safari, работает как задумано, но выдает ошибку только при использовании приложения «Добавить на рабочий стол».
Мой код
HTML
<form>
<label for="date">Date</label><input id="date" name="date" type="date" required>
<label for="what">In/Out</label>
<select id="what" name="what" required>
<option value="tIn">IN</option>
<option value="tOut">OUT</option>
</select>
<label for="when">Time</label>
<input id="when" name="when" type="time" step=60 required><!-- step=60 will show only HH:MM -->
<input type="submit" onClick="process()" value="Go">
<a id="share">Share</a>
JS
function process(){
var date = document.getElementById("date").value;
var what = document.getElementById("what").value;
var when = document.getElementById("when").value;
var waStr = waFormat(date,what,when);
var share = document.getElementById("share");
share.href = "whatsapp://send?text=" encodeURIComponent(waStr);
share.click();
}
//return string for whatsapp link
function waFormat(waDate,waWhat,waWhen){
var sp = " ";
waDate = waDate.split("-");
var mon = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
waDate = mon[(waDate[1]-1)] "-" waDate[2];
waWhat = (waWhat == "tIn") ? "IN" : "OUT";
waWhen = waWhen.split(":");
var apm = "am";
if(waWhen[0]>12){
waWhen[0] = waWhen[0]-12;
apm = "pm";
}
waWhen = ("0" waWhen[0]).slice(-2) ":" waWhen[1] apm;
return waDate ": " waWhat sp "at" sp waWhen;
}
Я переключался между encode() / encodeURI() / encodeURIComponent, но безрезультатно.
Пожалуйста, помогите. В чем может быть проблема с тем, что WhatsApp: // не работает в приложении Safari на рабочем столе? Я мог бы использовать https://wa.me ссылка, но также хотелось бы узнать, перестал ли whatsapp: // работать?
Это работает, когда та же страница открывается из Safari / Any, НЕ работает при открытии из приложения на рабочем столе в iOS
Комментарии:
1. Я испытываю ту же проблему с URI, начинающимся с webcal://
Ответ №1:
Я тоже столкнулся с этой проблемой. Для меня это сработало, чтобы отойти от схемы URL whatsapp://
и использовать следующее руководство https://faq.whatsapp.com/en/android/26000030 /.
Чтобы создать свою собственную ссылку с предварительно заполненным сообщением, которое автоматически появится в текстовом поле чата, используйте,
https://wa.me/whatsappphonenumber/?text=urlencodedtext
гдеwhatsappphonenumber
— полный номер телефона в международном формате иURL-encodedtext
— предварительно заполненное сообщение в кодировке URL.Пример:
https://wa.me/15551234567?text=I'm interested in your car for sale
Чтобы создать ссылку с предварительно заполненным сообщением, используйте
https://wa.me/?text=urlencodedtext
Пример:
https://wa.me/?text=I'm inquiring about the apartment listing
После нажатия на ссылку вам будет показан список контактов, которым вы можете отправить свое сообщение.