2010-02-23 4 views
9

Ich entwickle eine iPhone Web App mit jQTouch, und es enthält einen einfachen mailto: Link zu einer gültigen E-Mail-Adresse, die die iPhone-Mail-Anwendung beim Antippen gestartet werden soll - aber es tut es nicht.Ich kann keine Mailto-Links abrufen, um die Mail-App von Mobile Safari zu öffnen, wenn Sie jQTouch verwenden. Was könnte falsch sein?

Wenn ich eine "normale" Webseite in Mobile Safari besuche, die genau den gleichen Link enthält, und darauf tippe, bekomme ich das erwartete Ergebnis: Die Mail-App erscheint mit der richtigen E-Mail-Adresse im Feld An.

Hier ist der Link HTML (mit der Adresse geändert) nur für den Fall ich verrückt werde und haben einen dummen Fehler gemacht, aber es scheint völlig in Ordnung:

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

Hat jemand über diese kommen, wenn jQTouch mit ? Oder kann mir jemand wenigstens einen Weg vorschlagen, wie ich das debuggen kann? In dem Moment, in dem ich auf den nicht funktionierenden Link tippe, blinkt dieser rot (der aktive Verbindungsstatus) und absolut nichts anderes passiert.

+0

was erros gibt das iphone? – Grumpy

+1

Keine, die ich sehen kann. Gibt es eine Art Debug-Konsole für Mobile Safari? –

Antwort

5

Ich schaute erneut auf den Beispielcode im jQTouch-Demopaket und sah, dass sie ihrem E-Mail-Link ein target="_blank"-Attribut hinzufügten.

Ich tat dies zu meinem Link, und es begann zu arbeiten (Pop-up-Mail-Client-Fenster). Allerdings funktioniert auch die Verbindung, die in einer Standard-Web-Seite ist, aber ohne das target="_blank" Attribut ...

Ich bin verwirrt, scheint aber das Attribut Hinzufügen dieses Problem zu lösen, wenn Ihr Mobil Seite jQTouch verwendet.

1

Ausgezeichneter Fund, ich mache das gleiche und konnte bis vor kurzem nicht verstehen warum. Wenn Sie sich in jqtouch.js rev. 109 in Zeile 161 und 284 umsehen, sehen Sie, dass das Zielattribut "_Blank" jqtouch davon abhält, Ihr Klickereignis zu übernehmen. Das Ereignis wird abgefangen, da dies der primäre Mechanismus zum Wechseln von einer Seite zur anderen ist.

6

Ich fand, dass Hinzufügen target="_blank" zu den Verknüpfungen funktionierte - außer dass auf einigen Desktop-Browsern, öffnete es ein neues leeres Fenster und öffnete das E-Mail-Fenster. Zugegeben, jqtouch-Sites werden normalerweise nicht auf Desktop-Browsern angezeigt, aber ich mochte dieses Verhalten nicht.

Stattdessen ist hier, was ich tat:

  • Setzen Sie den mailto: Link in dem onclick Ereignisse und hinzugefügt Rückkehr false (so tatsächlich Link zu # nicht ausgelöst)
  • Added a noHighlight Klasse der Link

Hier ein Beispiel:

<a href="#" onclick="window.location='mailto:[email protected]'; return false;" class="noHighlight">Email me</a> 

Ich habe dann das CSS in der Theme-Datei geändert.

Vorher:

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

Nach:

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

Der Grund Ich habe die noHighlight Klasse ist, ohne es zu, dass, würde die Schaltfläche hervorgehoben bekommen und würde „kleben“, die die Schaltfläche aussehen wie es war immer noch in einem aktiven Zustand. Um das Problem zu umgehen, habe ich die Klasse hinzugefügt und das CSS wie oben beschrieben modifiziert.

Was die CSS Änderung tut, ist, dass, wenn die Verbindung (innerhalb eines li, die im Inneren eines ul ist) hat die Klasse noHighlight, wird es nicht die Hintergrund- oder Textfarbe ändern.

Scheint jetzt auf Desktop- und mobilen Browsern gut zu funktionieren.

+0

Wow, das Ändern meiner Tel- und Mailto-Links zu dieser Javascript-Version hat dazu geführt, dass sie besser auf meiner iPhone/Handy-Safari funktionieren. E-Mail hatte nicht funktioniert, nur eine neue leere Seite geöffnet, und Telefon öffnete eine neue leere Seite und rief an, aber jetzt tun sie nur Mail oder Anruf, wie sie sollten. Warum die ursprünglichen grundlegenden Links so schlecht funktionierten, ist mir ein Rätsel. – mikato

1

Es funktioniert nur mit target = "_ blank".

Für jene (wie mich), die es lästig finden das jedes Mal, wenn Sie „in einer neuen Seite Dies öffnet“ Pop-up auf einem Hahn zu bekommen mailto oder tel Link, den Sie tun dies:

bearbeiten jqtouch.js und gehen Zeile 284:

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

Jetzt ersetzen Sie diese Zeile durch:

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

Und auf der HTML (zB):

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

wird

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

Dies nicht zu jQTouch verwandt ist, aber mailto: Links wurden für mich entweder nicht funktioniert und sie zu beheben, alles, was ich musste nach dem Doppelpunkt Schrägstriche hinzufügen.

mailto://[email protected]

Haben Sie die Idee, dies hier zu tun: http://mobiledevelopertips.com/cocoa/launching-other-apps-within-an-iphone-application.html. Seltsamerweise funktionierte Telefonverbindung für mich ohne die Schrägstriche.

+0

Ich kann dir nicht mehr für diesen Hinweis danken. –

+0

Unter Ubuntu/Chrome mit Gmail als E-Mail-Client wird in Gmail eine neue E-Mail mit dem Ziel (to) geöffnet :( –

+0

Auf Mac mit Safari oder Chrome und E-Mail-Client = Apple Mail wird eine neue E-Mail in Apple Mail geöffnet aber es hat einen Doppelstrich am Anfang :( –