Я не могу получить ссылки mailto для открытия приложения Mail из Mobile Safari при использовании jQTouch. Что может быть не так? - PullRequest
11 голосов
/ 23 февраля 2010

Я разрабатываю веб-приложение для iPhone с использованием jQTouch , и оно содержит простую mailto: ссылку на действительный адрес электронной почты, которая должна запускать почтовое приложение iPhone при нажатии, но оно не .

Если я захожу на «обычную» веб-страницу в Mobile Safari, которая содержит точно такую ​​же ссылку, и нажимаю на нее, я получаю ожидаемый результат: почтовое приложение всплывает с правильным адресом электронной почты в поле «Кому».

Вот ссылка HTML (с измененным адресом) на всякий случай, если я схожу с ума и допустил глупую ошибку, но она выглядит совершенно нормально:

<p><a href="mailto:info@mycompany.com">info@mycompany.com</a></p>

Кто-нибудь сталкивался с этим при использовании jQTouch? Или кто-нибудь может по крайней мере предложить способ, которым я могу отладить это? В тот момент, когда я нажимаю на нерабочую ссылку, она мигает красным (состояние активной ссылки), и больше ничего не происходит.

Ответы [ 5 ]

7 голосов
/ 09 сентября 2010

Я обнаружил, что добавление target="_blank" к ссылкам работает - за исключением того, что в некоторых браузерах для настольных компьютеров оно открывает новое пустое окно И открывает окно электронной почты.Конечно, сайты jqtouch обычно не будут просматриваться в настольных браузерах, но мне это не нравится.

Вместо этого вот что я сделал:

  • Поместить ссылку mailto: в событие onclick и добавить возврат false (поэтому фактическая ссылка на # не срабатывает)
  • Добавлен класс noHighlight к ссылке

Вот пример:

<a href="#" onclick="window.location='mailto:email@domain.com'; return false;" class="noHighlight">Email me</a>

Затем я изменил CSS в файле темы.

До:

ul li a.active {
   background: #194fdb url(img/selection.png) 0 0 repeat-x;
   color: #fff;
}

После:

ul li a.active:not(.noHighlight) {
   background: #194fdb url(img/selection.png) 0 0 repeat-x;
   color: #fff;
}

Причина, по которой я добавил класс noHighlight, заключается в том, что без него кнопка будет выделена и будет «прилипать», что делало ее похожей на неподвижнуюв каком-то активном состоянии.Чтобы обойти эту проблему, я добавил класс и изменил CSS, как описано выше.

Изменение CSS заключается в том, что если ссылка (внутри li, которая находится внутри ul)имеет класс noHighlight, он НЕ изменит фон или цвет текста.

Кажется, теперь отлично работает как в настольных, так и в мобильных браузерах.

5 голосов
/ 23 февраля 2010

Я снова посмотрел пример кода в демонстрационном пакете jQTouch и увидел, что они добавляют атрибут target="_blank" к своей ссылке на электронную почту.

Я сделал это со своей ссылкой, и она начала работать (открыв окно почтового клиента). Однако ссылка, которая находится на стандартной веб-странице, также работает, но без атрибута target="_blank" ...

Я озадачен, но добавление этого атрибута, похоже, решает эту проблему, если ваша мобильная страница использует jQTouch.

2 голосов
/ 20 июня 2012

Это не относится к jQTouch, но mailto: ссылки не работали и для меня, и чтобы исправить их, все, что мне нужно было сделать, это добавить косую черту после двоеточия.

mailto://info@mycompany.com

Есть идея сделать это здесь: http://mobiledevelopertips.com/cocoa/launching-other-apps-within-an-iphone-application.html. Как ни странно, телефонные линии работали нормально для меня без косой черты.

2 голосов
/ 09 октября 2010

Работает нормально только с target = "_ blank".

Для тех (как я), которые находят раздражающим, когда вы нажимаете на всплывающее окно "Это откроется на новой странице" каждый раз, когда вы нажимаете на mailto или tel link вы можете сделать это:

Отредактируйте jqtouch.js и перейдите к строке 284:

if ($el.attr('target') == '_blank' || $el.attr('rel') == 'external')

Теперь замените эту строку на:

if ($el.attr('target') == '_self' || $el.attr('target') == '_blank' || $el.attr('rel') == 'external')

И в HTML (например):

<a href="tel:+351912345678">Call me</a>

становится

<a target="_self" href="tel:+351912345678">Call me</a>
1 голос
/ 11 июня 2010

Отличная находка, я делаю то же самое и до недавнего времени не мог понять почему. Если вы посмотрите вокруг линий 161 и 284 в jqtouch.js rev 109, то увидите, что целевой атрибут "_Blank" не даст jqtouch захватить ваше событие щелчка. Он перехватывает событие, потому что это основной механизм перемещения со страницы на страницу.

...