2010-02-23 5 views
9

Я разрабатываю веб-приложение iPhone с использованием jQTouch и содержит простую ссылку на действительный адрес электронной почты, который должен запускать приложение электронной почты iPhone при прослушивании, но это не так.Я не могу получить ссылки mailto, чтобы открыть приложение Mail из Mobile Safari при использовании jQTouch. Что может быть неправильным?

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

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

<p><a href="mailto:[email protected]">[email protected]</a></p> 

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

+0

Что такое erros дает iphone? – Grumpy

+1

Нет, что я вижу. Есть ли какая-то консоль отладки для Mobile Safari? –

ответ

5

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

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

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

1

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

6

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

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

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

Вот пример:

<a href="#" onclick="window.location='mailto:[email protected]'; 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, он не будет изменять фоновое или цвет текста.

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

+0

Ничего себе, просто меняя ссылки на tel и mailto на эту версию javascript, они заставили их работать лучше на моем сафари iphone/mobile. Электронная почта не работала, просто открыла новую пустую страницу, и телефон открыл новую пустую страницу и позвонил, но теперь они просто делают почту или звонят, как должны. Почему исходные базовые ссылки работали так плохо, что я не в себе. – mikato

1

Он отлично работает с целью = "_ пустой".

Для тех, кто (как я), кто это раздражает, чтобы получить «Это позволит открыть на новой странице» всплывающее окно каждый раз, когда вы нажмете на MAILTO или тел ссылку вы можете сделать это:

Редактировать 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> 
2

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

mailto://[email protected]

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

+0

Я не могу больше поблагодарить вас за эту подсказку. –

+0

В Ubuntu/Chrome с почтовым клиентом Gmail он открывает новое письмо в Gmail с целью (пустым) :( –

+0

На Mac с Safari или Chrome и почтовым клиентом = Apple Mail в Apple Mail открывается новое письмо но он имеет двойную слэш в начале :( –