2010-02-23 21 views
9

Tôi đang phát triển một ứng dụng web iPhone bằng cách sử dụng jQTouch và liên kết này chứa liên kết đơn giản mailto: đến địa chỉ email hợp lệ, sẽ khởi chạy ứng dụng thư trên iPhone khi được khai thác — nhưng không.Tôi không thể nhận liên kết mailto để mở ứng dụng Thư từ Mobile Safari khi sử dụng jQTouch. Điều gì có thể sai?

Nếu tôi truy cập trang web "bình thường" trong Mobile Safari chứa liên kết chính xác và nhấn vào nó, tôi nhận được kết quả mong đợi: ứng dụng thư bật lên với địa chỉ email chính xác trong trường Đến.

Đây là HTML liên kết (với địa chỉ đã thay đổi) chỉ trong trường hợp tôi sẽ loại hạt và đã thực hiện một sai lầm ngu ngốc, nhưng nó xuất hiện hoàn toàn tốt đẹp:

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

Có ai đi qua này khi sử dụng jQTouch ? Hoặc bất cứ ai có thể ít nhất đề nghị một cách mà tôi có thể gỡ lỗi này? Tại thời điểm khi tôi chạm vào liên kết không hoạt động, nó sẽ nhấp nháy màu đỏ (trạng thái liên kết hoạt động) và hoàn toàn không có gì khác xảy ra.

+0

iphone nào cung cấp cho iphone? – Grumpy

+1

Không có gì tôi có thể nhìn thấy. Có loại trình điều khiển gỡ lỗi nào cho Mobile Safari không? –

Trả lời

5

Tôi đã xem lại mã mẫu trong gói jQTouch demo và thấy rằng họ đã thêm thuộc tính target="_blank" vào liên kết email của họ.

Tôi đã làm điều này với liên kết của mình và nó bắt đầu hoạt động (bật lên cửa sổ ứng dụng thư khách). Tuy nhiên, liên kết đó là trong một trang web tiêu chuẩn làm việc là tốt, nhưng mà không các target="_blank" thuộc tính ...

Tôi bối rối, nhưng thêm thuộc tính mà dường như để giải quyết vấn đề này nếu trang di động của bạn đang sử dụng jQTouch.

1

Tìm thấy tuyệt vời, tôi đang làm điều tương tự và không thể hiểu tại sao cho đến gần đây. Nếu bạn nhìn đường tròn 161 và 284 trong jqtouch.js rev 109, bạn sẽ thấy thuộc tính target "_Blank" sẽ giữ jqtouch khỏi việc cướp sự kiện click của bạn. Nó đang chặn sự kiện vì đó là cơ chế chính để di chuyển từ trang này sang trang khác.

6

Tôi thấy rằng việc thêm target="_blank" vào các liên kết đã hoạt động - ngoại trừ trên một số trình duyệt trên máy tính để bàn, nó đã mở một cửa sổ trống mới VÀ mở cửa sổ email. Cấp, các trang web jqtouch thường không được xem trên các trình duyệt máy tính để bàn, nhưng tôi không thích hành vi đó.

Thay vào đó, đây là những gì tôi đã làm:

  • Đặt liên kết mailto: trong trường hợp onclick và bổ sung trở lại false (do thực tế liên kết đến # không cháy)
  • Added một lớp noHighlight để liên kết

Dưới đây là ví dụ:

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

Sau đó tôi đã sửa đổi CSS trong tệp chủ đề.

Trước:

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

Sau:

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

Lý do tôi thêm noHighlight lớp là không có nó, nút sẽ có được tô đậm và sẽ "dính" khiến nút trông giống như nó vẫn ở trạng thái hoạt động. Để giải quyết vấn đề này, tôi đã thêm lớp và sửa đổi CSS như được mô tả ở trên.

Điều gì thay đổi CSS là nếu liên kết (bên trong của một li nằm bên trong một ul) có lớp noHighlight, nó sẽ KHÔNG thay đổi màu nền hoặc màu văn bản.

Dường như giờ đây hoạt động tốt trên cả trình duyệt trên máy tính để bàn và thiết bị di động.

+0

Wow, chỉ cần thay đổi tel và mailto của tôi liên kết đến phiên bản javascript này khiến họ làm việc tốt hơn trên safari iphone/di động của tôi. Email đã không hoạt động, chỉ cần mở một trang trống mới và điện thoại đã mở trang trống mới và đã thực hiện cuộc gọi, nhưng giờ đây họ chỉ cần gửi thư hoặc gọi điện khi cần. Tại sao các liên kết cơ bản ban đầu làm việc quá tệ là vượt ra ngoài tôi. – mikato

1

Nó hoạt động tốt chỉ với mục tiêu = "_ trống".

Đối với những người (như tôi), những người cảm thấy bực bội để có được những "Điều này sẽ mở ra một trang mới" bật lên mỗi khi bạn gõ vào một mailto hoặc tel liên kết mà bạn có thể làm điều này:

chỉnh sửa jqtouch.js và đi đến dòng 284:

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

Bây giờ thay thế dòng này bằng cách:

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

Và trên HTML (ví dụ):

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

trở thành

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

này không liên quan đến jQTouch, nhưng mailto: link này không còn làm việc cho tôi trong hai và để khắc phục chúng, tất cả tôi phải làm là thêm dấu gạch chéo sau dấu hai chấm.

mailto://[email protected]

Got ý tưởng để làm điều này ở đây: http://mobiledevelopertips.com/cocoa/launching-other-apps-within-an-iphone-application.html. Thật kỳ lạ, các liên kết điện thoại hoạt động tốt cho tôi mà không có dấu gạch chéo.

+0

Tôi không thể cảm ơn bạn nhiều hơn cho manh mối này. –

+0

Trên Ubuntu/Chrome với Gmail là ứng dụng thư, nó sẽ mở một thư mới trong Gmail với mục tiêu (để) trống: ( –

+0

Trên máy Mac có Safari hoặc Chrome và ứng dụng email = Apple Mail, một email mới sẽ mở trong Apple Mail nhưng nó có một dấu gạch chéo kép ở đầu :( –

Các vấn đề liên quan