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

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

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

Спасибо,

Элизабет

4 ответа

Решение

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

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

window.location.replace фактически работает. Спасибо!

Вот jQuery, чтобы исправить это автоматически...

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

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

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

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

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

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

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

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

Спасибо,

Элизабет

Другие вопросы по тегам