Ошибка при использовании mailto:ссылка в Mobile Safari в режиме поддержки приложений

StackOverflow https://stackoverflow.com/questions/1943698

Вопрос

У меня есть форма на веб-странице с действием «mailto:email» (где электронная почта — это реальный адрес электронной почты).Когда я загружаю эту страницу в Mobile Safari в обычном режиме (т. е. не запускаю с главного экрана в режиме поддержки приложений), это работает нормально — после отправки формы появляется приложение электронной почты.Однако, когда я нахожусь в режиме поддержки приложений и запускаю его с главного экрана (поэтому нет Safari Chrome) и отправляю форму, я получаю сообщение об ошибке «URL-адрес не может быть показан».Однако обычный mailto:ссылка (т.е. не в форме) делает работать в режиме поддержки приложений.

Кто-нибудь еще заметил это?Есть какие-нибудь обходные пути?Запрещены ли формы в режиме поддержки приложений?

Спасибо,

Элизабет

Это было полезно?

Решение

Это точно описывает проблему.Со ссылкой mailto все в порядке, ссылка mailto не загружается.Часто веб-приложение вылетает.

Самое смешное, что тел:Ссылка на номера телефонов работает нормально.

window.location.replace действительно работает.Спасибо!

Вот jQuery для автоматического исправления этого...

$('a[href^=mailto]').click(function (event) {
    event.preventDefault();
    window.location.replace = $(this).attr('href');
    return false;
});

Другие советы

Думаю, я понял это.Я заметил, что в режиме работы с приложениями любая http-ссылка выведет вас из приложения и откроет отдельное окно мобильного Safari, перенесет вас на страницу и отобразит Chrome Safari.Имеет смысл (обычно нельзя ссылаться ни на что из веб-приложения с поддержкой приложений «все в одном».Я заметил это, потому что реализовал 4-страничное приложение со своей собственной «панелью вкладок» внизу и связывал файлы .html с помощью простых http-ссылок в элементе a.Когда я заменяю это функцией javascript для загрузки страниц с помощью document.location.replace, этого не происходит.

Итак, по форме - я думаю, должно произойти следующее: поскольку я использую схему (в данном случае mailto:), браузеру каким-то образом необходимо в "обычном режиме" интерпретировать схему и правильно сделать, запустив приложение электронной почты, и оно явно не работает при отправке формы.Я еще не нашел в документации Apple ничего конкретного об этом, поэтому, если кто-нибудь знает технические подробности, напишите!

ОБНОВЛЯТЬ:Я обнаружил, что могу получить доступ к серверному сценарию, используя форму в режиме веб-приложения, поэтому мне все еще интересно узнать о mailto:вопрос, если у кого есть ответ.

Спасибо,

Элизабет

У меня точно такая же проблема: ссылки mailto не работают в веб-режиме.Я только что закончил отправку отчета об ошибке в Apple.Посмотрим, что будет, а я тем временем нашел другого разработчика.платформа для веб-приложений, которая работает в веб-режиме, и ссылки mailto работают, но забавно, как она работает даже в этом случае — она не так плавна, как в Safari.Потому что даже в этом новом инструменте веб-разработчика, который я нашел, оно закрывает ваше приложение и запускает почтовый клиент, а это отстой.В Safari он просто открывается в почтовом окне, которое выдвигается обратно, если вы нажмете «Отменить» или «Отправить», но на самом деле ваше приложение не закрывается.

Вот обходной путь, который не зависит от JQuery:

aTmp = document.createElement("a");
aTmp.href="mailto:example@example.com?subject=Test&body=Hello.";
aTmp.click();

Обновлять: Чтобы запустить этот код из букмарклета, вам придется подождать около 1000 ms прежде чем панель закладок закроется и браузер будет готов ответить.Я понял это, обернув код в setTimeout функция.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top